Javascript ajax返回jsonp而不是json
我有一个简单的ajax调用,如下所示:Javascript ajax返回jsonp而不是json,javascript,jquery,json,jsonp,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} })); } }); [{"Id":2,"Text":"001"},{"Id":7
$.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} })); }
});
[{"Id":2,"Text":"001"},{"Id":7,"Text":"002"}]
它是tb autocomplete的一部分,不能只在一个视图上工作。
它不起作用的原因是,它不使用json,而是发出jsonp请求(通过嗅探,我看到它使用?callback=jqueryxxxxxxxx
)调用传递的url),并且从不调用success函数,因为jquery将其打包到匿名函数中,匿名函数的名称在回调参数中传递,服务器返回标准json(我不想使用jsonp,因为它是POST请求,而不是跨域请求)。我检查过,当前视图url和ajax url参数的此u
都处于启用状态http://localhost:8080/myapp/areax/...
,所以我不明白jQuery为什么在这里发出JSONP请求
编辑:
当发出url请求时,此操作不起作用的视图如下所示:
ajax的u参数类似于/AreaName/MyAutoComplete/Search,所以自动完成的完整url类似于
服务器的响应如下所示:
$.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} })); }
});
[{"Id":2,"Text":"001"},{"Id":7,"Text":"002"}]
我知道它不是jsonp,因为它应该是jsonp
<script>
jQuery151013129048690121925_1327065146844([{"Id":2,"Text":"001"},{"Id":7,"Text":"002"}]);
</script>
从这里的bug:
您可能正在使用jquery验证插件。jquery验证插件与jquery 1.5不兼容,冲突会导致出现这种问题
如果问题不是由于jquery验证插件造成的,请检查您是否有任何其他jquery插件可能与jquery 1.5不兼容能否显示包含任何参数的完整url?当“u”与当前域相对时,您是否可以尝试。例如:/myapp/arex/…这是一个跨域请求?可以吗e相同的主机但不同的端口?这很奇怪,伙计…我在edit中添加了更多信息。你确定它不适用于dataType:json。根据文档,即使你没有指定dataType:json,它也会推断这是它的json。是的,这正是我遇到的问题。正如我所怀疑的,这是jQuery中的错误:)谢谢!