jQuery AJAX状态“200 OK”,但没有数据响应
jQuery的:
$.ajax({ url : url, type : 'GET', dataType: 'json', data: { 'FN' : 'GetPages', 'PIN' : '7659' }, xhrFields: { withCredentials: true }, crossDomain: true, success: function(data) { alert('succsess'); console.log('data', data); }, error: function (xhr, ajaxOptions, thrownError) { alert('error'); console.log(xhr.status); console.log(thrownError); } });
Firebug Firefox网络
Firebug错误http://sofzh.miximages.com/jquery/8ar5vljg.png
怎么了
AJAX“error:”事件被触发,我的console.log输出是:
xhr.status – > 0
thrownError – >(空字符串)
这是正常的吗? 当我在浏览器中输入URL时,我收到一个带有JSON内容的文件下载,这应该不是问题吧?
感谢@CrimsonChin我知道它的同源政策问题
在计算中,相同的源策略是许多浏览器端编程语言(如JavaScript)的重要安全概念。 该策略允许在源自同一站点的页面上运行的脚本在没有特定限制的情况下访问彼此的方法和属性,但阻止访问不同站点上的页面中的大多数方法和属性。[1]
(来自http://en.wikipedia.org/wiki/Same_origin_policy )
授予JavaScript客户端对资源的基本访问权限只需要添加一个HTTP响应头,即:
Access-Control-Allow-Origin: * Access-Control-Allow-Origin: http://foo.example.com
(来自http://enable-cors.org/ )
Ofc,将JSON响应转换为JSONP响应也可以。 谢谢@djakapm
试试这个
$.ajax({ type : "GET", url : URL, data: { 'FN' : 'GetPages', 'PIN' : '7659' }, xhrFields: { withCredentials: true }, crossDomain: true, dataType : "jsonp", jsonp : "jsoncallback", jsonpCallback : "SMS", cache : true, success : function(service_data) { }, error : function(msg) { alert(JSON.stringify(msg)); } });
我无法从图像中弄清楚,但如果你正在尝试向不同的域发送AJAX请求,则需要使用JSONP ,简单的AJAX请求是不够的
尝试将dataType: 'json'
更改为dataType: 'jsonp'
并添加callback=?
到你的URL