jQuery.ajax возвращает jsonp вместо json

У меня есть простой ajax вызов, такой как этот:

$.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=jQueryxxxxxxx), и функция success никогда не вызывается, потому что jquery упаковывает ее в анонимную функцию, имя которой передается в аргументе callback, а сервер возвращает стандартный json (я не хочу использовать jsonp, так как это POST запрос и НЕ междоменный запрос). Я проверил, и текущий view url и этот u для ajax url аргумента находятся на http://localhost:8080/myapp/areax/... , так что я не понимаю, почему jQuery делает JSONP запрос здесь.

EDIT:

Вид, на котором это не работает, запрос url делается вот так: http://hostname:8080/AreaName/Report/ViewReport , а u параметр ajax имеет вид /AreaName/MyAutoComplete/Search, поэтому полный url, на который делается автозаполнение, имеет вид http://hostname:8080/AreaName/MyAutoComplete/Search?callback=jQuery151013129048690121925_1327065146844

Ответ сервера выглядит так:

[{"Id":2,"Text":"001"},{"Id":7,"Text":"002"}]

Я знаю, что это не jsonp, так и должно быть


Но я хочу сделать нормальный json запрос, а не jsonp.

UPDATE

Самое странное (я начинаю думать, что это ошибка в jQUery v1.5.1, который используется в проекте), что когда я удаляю dataType: "json", он делает нормальный json запрос :)

Итак, вместо того, как сделать json запрос, теперь я приму объяснение, почему этот работает как ожидалось (а тот с dataType: "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} })); }
});

6
задан Goran Obradovic 20 January 2012 в 13:22
поделиться