Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajax返回jsonp而不是json_Javascript_Jquery_Json_Jsonp - Fatal编程技术网

Javascript ajax返回jsonp而不是json

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调用,如下所示:

$.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中的错误:)谢谢!