Perché jQuery non è aggiungendo automaticamente la richiamata JSONP?
Domanda
Il $.getJSON()
stati di documentazione:
Se l'URL specificato si trova su un server remoto, la richiesta viene trattata come JSONP invece. Vedere la discussione del tipo di dati
jsonp
a $ .ajax () per maggiori dettagli.
Il $.ajax()
documentazione per i tipi di dati jsonp
stati (sottolineatura mia):
I carichi in un blocco JSON utilizzando JSONP. aggiungerà un extra "? Callback =?" alla fine dell'URL per specificare il callback .
Così sembra che se chiamo $.getJSON()
con un URL tra domini, il "callback =?" Extra parametro dovrebbe ottenere automaticamente aggiunto. (Altre parti del supporto documentazione di questa interpretazione.)
Comunque, io non sto vedendo che il comportamento. Se non aggiungo il "callback =?" esplicitamente, jQuery fa in modo non corretto un XMLHttpRequest (che restituisce i dati nulli poiché non riesco a leggere la risposta cross-domain). Se lo faccio aggiungere esplicitamente, jQuery rende correttamente un
Altri suggerimenti
Prova questo:
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',
});
Sì, penso che tu frainteso. $.getJSON
è una scorciatoia per $.ajax({datatype: 'json'....
la documentazione dice. E non fa mai una chiamata JSONP a meno che non si aggiunge il parametro callback=?
.
Sto usando il codice qui sotto,
$. Ajax ({ URL: URL, dataType: 'jsonp', successo: la funzione (i dati) { // fare qualcosa } di errore: la funzione (jqXHR, textStatus, errorThrown) {}, jsonpCallback: 'login_callback', });
Ma, richiamata a volte viene aggiunto alla fine dell'URL ea volte non in IE. Mentre il suo bene in Chrome e FF di lavoro.