Pourquoi ne pas jQuery automatiquement le rappel Annexer des JSONP?
Question
Le $.getJSON()
documentation indique:
Si l'URL spécifiée est sur un serveur distant, la demande est traitée comme JSONP au lieu. Voir la discussion du type de données
jsonp
dans .ajax de $ () pour plus de détails.
Le $.ajax()
documentation pour les états de type de données jsonp
(Souligné par l'auteur):
charges dans un bloc de JSON en utilisant JSONP. ajouter un supplément "? = Rappel?" à la fin de votre URL pour spécifier le rappel .
Il semble donc que si je l'appelle $.getJSON()
avec une URL inter-domaines, le supplément « callback =? » paramètre doit se automatiquement ajouté. (D'autres parties du support de documentation cette interprétation.)
Cependant, je ne vois pas ce comportement. Si je ne fais pas le « rappel =? » explicitement, jQuery fait incorrectement un XMLHttpRequest (qui renvoie des données nulles puisque je ne peux pas lire la réponse inter-domaines). Si je fais l'ajouter explicitement, jQuery fait correctement une requête
Autres conseils
Essayez ceci:
var URL = "http://www.geonames.org/postalCodeLookupJSON" +
"?postalcode=10504&country=US";
function alertResponse(data, status) {
alert("data: " + data + ", status: " + status);
}
$.ajax({
url: URL,
dataType: 'jsonp',
jsonpCallback: 'alertResponse',
});
Oui, je pense que vous avez mal compris. $.getJSON
est un raccourci pour $.ajax({datatype: 'json'....
que la documentation dit. Il ne fait jamais un appel JSONP sauf si vous ajoutez le paramètre callback=?
.
Je suis en utilisant le code ci-dessous,
$. Ajax ({ url: URL, dataType: 'jsonp', succès: function (données) { // faire quelque chose } Erreur: la fonction (jqXHR, textStatus, errorThrown) {}, jsonpCallback: 'login_callback', });
Mais, le rappel a parfois ajouté à la fin de l'url et parfois pas dans IE. Bien que son travail bien en chrome et FF.