jQuery.ajax返回jsonp而不是json

Gor*_*vic 6 javascript jquery json jsonp

我有一个像这样简单的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} })); }
});
Run Code Online (Sandbox Code Playgroud)

它是tb自动完成的一部分,不仅适用于一个视图.它不起作用的原因是它代替json,它使jsonp请求(通过嗅探我看到它调用传递的url ?callback=jQueryxxxxxxxxx),并且永远不会调用success函数,因为jquery将它打包到匿名函数中,其名称在callback参数中传递,和服务器返回标准的json(我不想使用jsonp,因为它是POST请求而不是跨域请求).我检查了,当前的视图url和这个uajax url参数都打开了http://localhost:8080/myapp/areax/...,所以我不明白为什么jQuery在这里发出JSONP请求.

编辑:

这个不起作用的视图有url请求是这样的: http:// hostname:8080/AreaName/Report/ViewReport 和ajax的参数就像是/ AreaName/MyAutoComplete/Search,所以完整的url到哪个autocomplete是make就像 http:// hostname:8080/AreaName/MyAutoComplete/Search?callback = jQuery151013129048690121925_1327065146844

服务器的响应如下所示:

[{"Id":2,"Text":"001"},{"Id":7,"Text":"002"}]
Run Code Online (Sandbox Code Playgroud)

我知道它不是jsonp,因为它应该是

<script>
 jQuery151013129048690121925_1327065146844([{"Id":2,"Text":"001"},{"Id":7,"Text":"002"}]);
</script>
Run Code Online (Sandbox Code Playgroud)

但我想制作正常的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} })); }
});
Run Code Online (Sandbox Code Playgroud)

Luc*_*ari 2

来自这里的错误: http: //bugs.jquery.com/ticket/8118

您可能正在使用 jquery-validation 插件。Jquery-validation 插件与 jQuery 1.5 不兼容,冲突会导致您在这里遇到的问题。

如果问题不是专门由 jquery-validation 插件引起的,请检查您是否有任何其他可能与 jQuery 1.5 不兼容的 jquery 插件