我有以下jQuery Ajax调用(没有其他全局设置/处理程序):
$.ajax( {
url: "http://www.blah.com/url/does/not/exist",
type: "get",
data: someData,
dataType: "json",
error: function (xhr, msg, ex)
{
alert("Failed: " + msg);
},
complete: function (xhr, msg)
{
alert("Done: " + msg);
}
我希望调用我的错误处理程序,但是complete
事件会触发,警报会显示Done: success
。在我的Javascript控制台中,我看到以下消息:
XMLHttpRequest cannot load http://www.blah.com/url/does/not/exist.
Origin null is not allowed by Access-Control-Allow-Origin.
Origin
消息的含义是什么?谢谢!
答案 0 :(得分:2)
看起来唯一的方法是在我的success
方法中接收服务器响应并将其存储在全局变量中,我将检查complete
的处理程序(总是被调用) 。没有回复意味着请求失败。
在这个优秀的图书馆中处理错误是一种伪劣的方式。
答案 1 :(得分:1)
您的错误处理程序未被调用,因为甚至没有发生AJAX请求:浏览器拒绝执行此操作因为same origin policy:您请求的数据来自不同的网站而不是一个为您的页面服务。
您可以尝试使用JSONP
数据类型来解决此问题:
$.ajax({
url: "http://www.blah.com/url/does/not/exist",
type: "get",
data: someData,
dataType: "jsonp",
error: function(xhr, msg, ex) {
alert("Failed: " + msg);
},
complete: function(xhr, msg) {
alert("Done: " + msg);
}
});