2015-03-16 4 views
0

У меня есть сценарий JQuery Ajax, как это:Каков наилучший способ обработки ВСЕХ ошибок jQuery ajax сразу?

jQuery(document).ready(function($){ 
// $('.do-something').click(function (e) { 
$(document).on('click','#do-something',function (e) { 
    e.preventDefault(); 
    var id = $(this).data("id"); 
    $.ajax({ 
    url: "https://www.domain.com/page.php?id=" + id, 
    type: "GET", 
    dataType: 'json', 
    success: function(json) { 
     if(json.valid == 1) { 

      $("#hidden-div").show(); 

     } 
     else { 

      $("#hidden-error-div").show(); 

     } 
    }, 
    error: function (xhr, ajaxOptions, thrownError) { 

     $("#hidden-error-div").show(); 

    }, 
    timeout: 15000 
    }); 
}); 
}); 

Но у меня есть ощущение, что я не обрабатывает все возможные ошибки правильно. Есть ли способ обрабатывать ВСЕ ошибки, которые могут произойти сразу в функции error, включая таймаут?

ответ

0

JQuery имеет хороший глобальный обработчик ошибок .ajaxError() который вы можете отключить локально, со свойством global набором для false, любой запрос, не имеющим global набора для false вызовет обратный вызов ранее установленный.

Что касается таймаута, вы можете использовать .ajaxSetup(), чтобы установить его по всему миру. Есть одна вещь, которая может блокироваться, это часть успеха, где вы проверяете наличие ошибок, но вы можете выделить проверку и обратный вызов ошибки, чтобы ajaxError и успех вызывали одну и ту же функцию, если что-то не удалось.

Ваш код может выглядеть примерно так

$.ajaxSetup({ 
    timeout: 15000 
}); 

$(document).ajaxError(function() { 
    $("#hidden-error-div").show(); 
}); 

jQuery(document).ready(function($){ 
// $('.do-something').click(function (e) { 
$(document).on('click','#do-something',function (e) { 
    e.preventDefault(); 
    var id = $(this).data("id"); 
    $.ajax({ 
    url: "https://www.domain.com/page.php?id=" + id, 
    type: "GET", 
    dataType: 'json', 
    success: function(json) { 
     if(json.valid == 1) { 

      $("#hidden-div").show(); 

     } 
     else { 

      $("#hidden-error-div").show(); 

     } 
    } 
    }); 
}); 
}); 
Смежные вопросы