2015-03-25 6 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") 
    }); 

Когда вызов успешно, success и done функции выполняются. Однако, когда вызов терпит неудачу (например, когда я меняю URL-адрес на gobbledygook), ничего не запускается, даже не always.

Поведение происходит как в Firefox, так и в Chrome.

Я видел множество других людей, говоря, что это проблема с JSONP, и принятый ответ говорит, что делает его async: false будет работать, но ни async: false, ни async: true работал.

В чем проблема?

+0

читайте это: http://stackoverflow.com/questions/4281274/jquery-ajax-404-handling – Miro

+0

Спасибо, комментарий там помог! – abustamam

ответ

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 секунд ошибка/всегда работает.

Смежные вопросы