У меня есть простой 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} })); }
});
Это является частью ТБ автозаполнения, которая не работает только с одной точки зрения. Причина, по которой он не работает, заключается в том, что вместо json он делает запрос jsonp (понюхал, я видел, что он вызывает переданный url с ?callback=jQueryxxxxxxxxx
), а функция успеха никогда не вызывается, потому что jquery упаковывает ее в анонимную функцию, чье имя передается в обратном вызове аргумент, а сервер возвращает стандартный json (я не хочу использовать jsonp, поскольку это запрос POST и НЕ междоменный запрос). Я проверил, как текущий URL-адрес, так и этот u
для аргумента ajax url находятся на http://localhost:8080/myapp/areax/...
, поэтому я не понимаю, почему jQuery делает запрос JSONP здесь.
EDIT:
Посмотреть на которой это не работает уже URL запроса производится как это: http://hostname:8080/AreaName/Report/ViewReport параметр и у Аякса, как /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
Weirdest вещь все (я начинаю думать, что это ошибка в 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} })); }
});
Можете ли вы показать полный URL, включая любые параметры? – nnnnnn
Можете ли вы попробовать, когда «u» относится к вашему текущему домену. Например:/myapp/areax/... – RvdK
- это запрос на перекрестный домен? может быть один и тот же хост, но другой порт? Это странный чувак ... –