为什么jQuery在ajax调用失败时不会引发错误事件

Zai*_*ikh 3 ajax jquery

为什么jQuery error在执行以下脚本时不会引发任何事件?

以为我已经注册了错误事件,但它没有被解雇.

chrome显示我在Network标签中出现以下错误Console.

GET http://www.google.com/adfdaf?callback=jQuery15204572567550931126_1321347602706&_=1321348668347 404 (Not Found)

JavaScript的:

    $.ajax({
        type: "GET",
        url: 'http://google.com/adfdaf?callback=?',
        dataType: "jsonp",
        success: function (msg) {
            console.log('Custom Domain validated successfully.');
        },
        error: function () {
            console.log('Error occured while validating Custom Domain.');
        }
    });
Run Code Online (Sandbox Code Playgroud)

Jam*_*ice 5

jQuery文档用于.ajax说明以下内容:

错误(jqXHR,textStatus,errorThrown)

请求失败时要调用的函数.该函数接收三个参数:jqXHR(在jQuery 1.4.x中,XMLHttpRequest)对象,描述发生的错误类型的字符串和可选的异常对象(如果发生).第二个参数的可能值(除了null)是"timeout","error","abort"和"parsererror".发生HTTP错误时,errorThrown会收到HTTP状态的文本部分,例如"Not Found"或"Internal Server Error".从jQuery 1.5开始,错误设置可以接受一系列函数.每个函数将依次调用.注意:不会为跨域脚本和JSONP请求调用此处理程序.

你可以.getJSON改用.例如:

$.getJSON("url?callback=?", function() {
    //Success!
}).error(function() {
    //Error!
});
Run Code Online (Sandbox Code Playgroud)

编辑

看起来这也无济于事.似乎解决方法是提供一个timeout选项.ajax:

$.ajax({
    type: "GET",
    url: 'http://google.com/adfdaf?callback=?',
    dataType: "jsonp",
    timeout: 5000,
    success: function (msg) {
        console.log('Custom Domain validated successfully.');
    },
    error: function () {
        console.log('Error occured while validating Custom Domain.');
    }
});
Run Code Online (Sandbox Code Playgroud)

显然,这并不理想,但错误处理程序将在5秒后运行.