Ho una semplice chiamata AJAX in questo modo:jQuery.ajax restituisce jsonp invece di JSON
$.ajax({
url: u, type: "POST", dataType: "json",
data: data,
success: function (d) { response($.map(d, function (o) { return { label: o.Text, value: o.Text, id: o.Id} })); }
});
Fa parte di un completamento automatico tb che non funziona su un solo punto di vista. La ragione per cui non funziona è che invece di json, fa richiesta jsonp (sniffando ho visto che chiama l'url passato con ?callback=jQueryxxxxxxxxx
), e la funzione success non viene mai chiamata perché jquery lo impacchetta in una funzione anonima il cui nome è passato in callback argomento, e il server restituisce json standard (non voglio usare jsonp in quanto è la richiesta POST e NON la richiesta tra domini). Ho controllato, sia l'URL della vista corrente che questo argomento u
per l'URL di ajax sono su http://localhost:8080/myapp/areax/...
, quindi non vedo perché jQuery faccia richiesta JSONP qui.
EDIT:
Visualizza su cui questo non funziona è è fatta richiesta di URL è simile a questo: http://hostname:8080/AreaName/Report/ViewReport parametro eu di Ajax è come /AreaName/MyAutoComplete/Ricerca, url in modo completo a cui completamento automatico è fatto è come http://hostname:8080/AreaName/MyAutoComplete/Search?callback=jQuery151013129048690121925_1327065146844
risposta del server è simile al seguente:
[{"Id":2,"Text":"001"},{"Id":7,"Text":"002"}]
So che non è JSONP, per quello che dovrebbe essere
<script>
jQuery151013129048690121925_1327065146844([{"Id":2,"Text":"001"},{"Id":7,"Text":"002"}]);
</script>
ma voglio rendere normale richiesta di JSON, non JSONP.
UPDATE
cosa più strana di tutto (sto iniziando a pensare che si tratta di un bug in jQuery v1.5.1 che viene utilizzato su progetto) è che quando rimuovo dataType: "json"
, fa una normale richiesta di JSON :)
Così, invece di come fare richiesta di jSON, ora accetterò una spiegazione sul motivo per cui questo funziona come previsto (e quello con dataType: "json" non lo fa):
$.ajax({
url: u, type: "POST",
data: data,
success: function (d) { response($.map(d, function (o) { return { label: o.Text, value: o.Text, id: o.Id} })); }
});
Potete per favore mostrare l'URL completo inclusi eventuali parametri? – nnnnnn
Puoi provare quando 'u' è relativo al tuo dominio attuale. Ad esempio:/myapp/areax/... – RvdK
è una richiesta di dominio incrociato? potrebbe essere lo stesso host ma una porta diversa? È strano amico ... –