的我有一個簡單的Ajax調用是這樣的:jQuery.ajax返回JSONP而不是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} })); }
});
這是一個TB自動完成不工作只在一個視圖的一部分。 它不起作用的原因是,而不是json,它使jsonp請求(通過嗅探,我看到它調用傳遞的url與?callback=jQueryxxxxxxxxx
),並且永遠不會調用成功函數,因爲jquery將其打包到匿名函數,其名稱在回調中傳遞參數和服務器返回標準JSON(我不想使用JSONP,因爲它是POST請求,而不是跨域請求)。我檢查了當前視圖url和這個u
的ajax url參數都在http://localhost:8080/myapp/areax/...
,所以我不明白爲什麼jQuery使得JSONP請求在這裏。
編輯:
觀上,這並不工作已經URL請求時是這樣的: 阿賈克斯的http://hostname:8080/AreaName/Report/ViewReport 和u參數就像/AREANAME/MyAutoComplete /搜索,所以完整的URL到自動完成由像 http://hostname:8080/AreaName/MyAutoComplete/Search?callback=jQuery151013129048690121925_1327065146844
服務器的迴應是這樣的:
[{"Id":2,"Text":"001"},{"Id":7,"Text":"002"}]
我知道這是不是JSONP,對於它應該是
<script>
jQuery151013129048690121925_1327065146844([{"Id":2,"Text":"001"},{"Id":7,"Text":"002"}]);
</script>
但我想進行正常的JSON請求,沒有JSONP。
UPDATE
最古怪的所有東西(我開始認爲這是其中的項目中使用jQuery的V1.5.1中的錯誤)是,當我刪除dataType: "json"
,它使一個正常的JSON請求:)
因此,而不是如何讓JSON請求,現在我會接受的解釋爲什麼這工作正常(和一個與數據類型:「JSON」沒有):
$.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} })); }
});
能否請你展示完整的URL包括任何參數? – nnnnnn
當你'u'相對於你當前的域名時,你可以試試嗎?例如:/ myapp/areax/... – RvdK
是否是跨域請求?可能是相同的主機,但不同的端口?這是奇怪的傢伙... –