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 Error http://s14.directupload.net/images/121123/8ar5vljg.png
会发生什么
AJAX“error:”事件被触发,我的 console.log 输出是:
xhr.status - > 0
thrownError - > (空字符串)
这是正常的吗?当我在浏览器中输入URL时,我收到一个带有JSON内容的文件下载,这应该不是问题吗?
答案 0 :(得分:10)
感谢@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
Ofc,将JSON响应转换为JSONP响应也行。谢谢@djakapm
答案 1 :(得分:3)
试试这个
$.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));
}
});
答案 2 :(得分:2)
我无法从图像中弄清楚,但如果您正在尝试向不同的域发送AJAX请求,则需要使用 JSONP ,简单的AJAX请求将不够
尝试将dataType: 'json'
更改为dataType: 'jsonp'
并将callback=?
添加到您的URL