jQuery AJAX错误回调没有运行

时间:2015-03-25 05:54:14

标签: javascript jquery ajax jsonp

我有一个如下的AJAX调用:

    $.ajax({
        type: "get",
        url: "xxx.xxx.xxx/xxx.js",
        dataType: 'jsonp',
        success: function(data) {
            console.log("success");
        }
    }).done(function(data){
        console.log("done");
    }).fail(function(data){
        console.log("fail");
    }).always(function(){
        console.log("always")
    });

当呼叫成功时,successdone功能运行。但是,当调用失败时(比如当我将url更改为gobbledygook时)没有运行,甚至没有运行always

这种行为发生在Firefox和Chrome中。

我见过很多其他人提到JSONP存在问题,接受的答案是说async: false可以使用,async: false也不async: true 1}}工作。

这里似乎有什么问题?

1 个答案:

答案 0 :(得分:0)

有效的解决方法是添加timeout

$.ajax({
    type: "get",
    url: "xxx.xxx.xxx/xxx.js",
    dataType: 'jsonp',
    success: function(data) {
        console.log("success");
    },
    timeout: 5000
}).done(function(data){
    console.log("done");
}).fail(function(data){
    console.log("fail");
}).always(function(){
    console.log("always")
});

然后在5秒后,错误/始终有效。