2009-05-26 7 views
1

jQuery a des méthodes géniales comme getJSON, get et load. Cependant, tous à la fin font appel AJAX. J'essaie d'accéder à l'API www.eventsinindia.com/cities/mumbai/events.js?month=2009-05.Comment accéder à une API en utilisant jQuery

Cet appel d'API renvoie les données au format JSON.

Je n'ai trouvé aucun moyen d'appeler cette API à partir de jQuery et d'obtenir les données de sortie au format JSON. Je continue à obtenir l'accès à l'URI restreinte refusé code: "1012 erreur parce que jQuery essaie de faire un appel AJAX. L'appel AJAX à partir d'une page autonome vers un serveur est interdit.

Répondre

2

Comme il s'agit d'un domaine différent, utilisez-vous un rappel JSONP?

http://docs.jquery.com/Ajax/jQuery.getJSON

À partir de jQuery 1.2, vous pouvez charger JSON données situées sur un autre domaine si vous spécifiez un rappel JSONP, qui peut être fait comme ceci: "? Myurl rappel =". jQuery remplace automatiquement le? avec le nom correct de la méthode à appeler, en appelant votre rappel spécifié. Ce paramètre de rappel peut varier selon sur API, par exemple Yahoo Pipes nécessite "_callback =?"

+0

JSONP doit également être pris en charge sur le côté serveur. La réponse JSON normale doit être enveloppée dans la valeur du paramètre url. Donc, si vous avez myurl? Callback = a32b5c2 le résultat devrait ressembler à quelque chose comme: a32b5c2 ({}); – gregers

0

Comme @ceejayoz suggéré JSONP technique doit être utilisée pour accéder aux données sur différents domaines. Mais pour que cela fonctionne, le script côté serveur doit être compatible avec JSONP, ce qui signifie qu'il doit accepter un paramètre qui définira un nom de fonction de postback du client pour préfixer les données JSON. Si ce n'est pas le cas, vous devez écrire un script serveur sur le domaine hébergeant votre script client pour servir de passerelle vers le domaine étranger.

0

Si ce n'est pas une demande inter-domaines, vous avez juste besoin:

jQuery.getJSON("/cities/mumbai/events.js?month=2009-05", function(json) { 
    alert(json[0]); 
}); 
Questions connexes