jQuery.ajax返回jsonp而不是json
jQuery.ajax returns jsonp instead of json
我有一个简单的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} })); }
});
它是tb自动完成的一部分,不能只在一个视图上工作。它不起作用的原因是,它不是json,而是发出jsonp请求(通过嗅探,我看到它用?callback=jQueryxxxxxxxxx
调用传递的url),而成功函数从未被调用,因为jquery将其打包到匿名函数中,匿名函数的名称在回调参数中传递,服务器返回标准json(我不想使用jsonp,因为它是POST请求,而不是跨域请求)。我检查过,当前视图url和这个u
for ajax url参数都在http://localhost:8080/myapp/areax/...
上,所以我不明白jQuery为什么在这里发出JSONP请求。
编辑:
不起作用的视图有url请求,如下所示:http://hostname:8080/AreaName/Report/ViewReportajax的u参数类似于/AreaName/MyAutoComplete/Search,因此自动完成的完整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。
更新
最奇怪的是(我开始认为这是项目中使用的jQUery v1.5.1中的一个错误),当我删除dataType: "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} })); }
});
从这里的错误:http://bugs.jquery.com/ticket/8118
您可能正在使用jquery验证插件。Jquery验证插件与Jquery 1.5不兼容,冲突导致了您在这里遇到的问题。
如果问题不是由jquery验证插件引起的,请检查是否有任何其他jquery插件可能与jquery 1.5 不兼容
- 如何使用jquery ajax和jsonp在您自己的域上读取json数据
- 分析angular.js中的JSONP$http.json()响应
- 如何使用Angular$http.jsonp从S3加载JSON文件
- 在没有jsonp的情况下从另一个域获取数据(json格式)
- 使用 JSONP 调用的跨域 AJAX 返回纯 JSON
- Javascript CORS JSON/JSONP Request
- 如何在 cakephp 中回复 jsonp,而无需求助于 .json
- 使用 jQuery 和 jsonp (vimeo api) 按键获取选定的 json 值
- AngularJS在从HTTP返回的JSON中获取语法错误.JSONP.
- 数据类型 jsonp 和 JSON 之间的区别
- 为什么 $.getJson 不能与 json 或 jsonp 一起使用
- RESTful JSON 端点应该以 .js 结尾吗?JSONP呢?
- 使用 ajax 将 Json/Jsonp 数据放入表单中
- 无法使用 JSONP 访问 json 页面
- 使用 Ajax 调用 Deezer API (jquery) - dataType JSON 返回空 - JSONP 返
- 如何拉动&显示JSON/JSONP文件中的数据
- 使用JSON/JSONP访问tumblr帖子
- 连续json &jsonp请求使用Crossrider失败
- 尝试从url获取JSON/JSONP数据,并将结果显示在html网页上
- 无法正确获取JSON/JSONP