2015-03-25 87 views
0

我有一個AJAX調用如下:jQuery的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工作。

什麼似乎是這裏的問題?

+0

閱讀此:http://stackoverflow.com/questions/4281274/jquery-ajax-404-handling – Miro 2015-03-25 06:00:50

+0

謝謝,有幫助的評論! – abustamam 2015-03-25 06:05:16

回答

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秒後,錯誤/始終有效。