Gli stati $.getJSON()
documentazione:Perché jQuery non aggiunge automaticamente il callback JSONP?
If the specified URL is on a remote server, the request is treated as JSONP instead. See the discussion of the
jsonp
data type in $.ajax() for more details.
La documentazione $.ajax()
per il tipo di dati jsonp
stati (sottolineatura mia):
Loads in a JSON block using JSONP. Will add an extra "?callback=?" to the end of your URL to specify the callback.
Così sembra che se chiamo $.getJSON()
con un URL tra domini, l'extra "callback =?" il parametro dovrebbe essere automaticamente aggiunto. (Altre parti della documentazione supportano questa interpretazione.)
Tuttavia, non vedo questo comportamento. Se non aggiungo il "callback =?" esplicitamente, jQuery crea erroneamente XMLHttpRequest (che restituisce dati nulli poiché non riesco a leggere la risposta tra domini). Se lo aggiungo esplicitamente, jQuery fa correttamente una richiesta > allo script <.
Ecco un esempio:
var URL = "http://www.geonames.org/postalCodeLookupJSON" +
"?postalcode=10504&country=US";
function alertResponse(data, status) {
alert("data: " + data + ", status: " + status);
}
$.getJSON(URL, alertResponse);
// alerts "data: null, status: success"
$.getJSON(URL + "&callback=?", alertResponse);
// alerts "data: [object Object], status: undefined"
Allora, cosa sta succedendo? Sto fraintendendo la documentazione o dimenticando qualcosa?
Inutile dire che non si tratta di un grosso problema, ma sto creando un'API Web e ho impostato di proposito il parametro callback su "callback" nella speranza di adattarlo perfettamente all'utilizzo di jQuery.
Grazie!
(Edit:. Ho cross-posted this nei forum jQuery se siete interessati)
Nel tuo esempio, in realtà intendi 'jsonpCallback: 'alertResponse'', e sì, funziona così senza che io debba aggiungere esplicitamente il" callback =? " parametro. Ma è molto più prolisso dell'eleganza di '$ .getJSON()'. Sarebbe bello se '$ .getJSON()' funzionasse come documentato ... –