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)
来自这里的错误: http: //bugs.jquery.com/ticket/8118
您可能正在使用 jquery-validation 插件。Jquery-validation 插件与 jQuery 1.5 不兼容,冲突会导致您在这里遇到的问题。
如果问题不是专门由 jquery-validation 插件引起的,请检查您是否有任何其他可能与 jQuery 1.5 不兼容的 jquery 插件
| 归档时间: |
|
| 查看次数: |
668 次 |
| 最近记录: |