2011-03-02 2 views
3

я вижу, что они добавили функцию для кодов состоянияМожете ли вы отложить statusCode в jquery 1.5?

StatusCode (добавлено 1.5) Карта Значение по умолчанию: {} A карту числовых кодов HTTP и функций, которые будут вызываться при ответ имеет соответствующий код. Например, следующий будет оповещать , когда состояние ответа является 404:

$.ajax({ statusCode: {404: function() { 
    alert('page not found'); } }); 

Если запрос успешно, функции коды состояний принимают одни и те же параметры, как обратный вызов успеха; если это приводит к ошибке, они принимают те же параметры, что и ошибки

Мне интересно, что вы можете сделать что-то вроде $.ajax({...}).statusCode(function(){...});

Simliar, как вы можете сделать

var jqxhr = $.ajax({ url: "example.php" }) 
    .success(function() { alert("success"); }) 
    .error(function() { alert("error"); }) 
    .complete(function() { alert("complete"); }) 

ответ

4

Да , ты можешь. Функция, насколько я могу судить, недокументирована, но функциональность, похоже, точно так, как вы ожидали, - вы передаете карту объектов функций обработчика, где ключ является кодом ответа HTTP, а значение является обработчиком функция. See the source code.

Пример

$.ajax({ url: "example.php" }) 
    .statusCode({ 
     200: function(){ 
      alert('success'); 
     }, 
     404: function(){ 
      alert('not found'); 
     } 
    }); 
+0

Я думаю, если вы используете .success хотя это как 200 ответ не так ли? – chobo2

+0

@ chobo2 'success' будет работать на кодах состояния <400. В противном случае будут выполняться обработчики 'error'. 'statusCode' позволяет увеличить степень детализации, если вам это нужно. – lonesomeday

+0

jQuery 1.5 не запускает 400, 401, как указано для JSONP: 401: function() { alert ('не авторизованный'); }, 400: function() { alert ('bad request'); } Из-за известной проблемы, похоже. –