jQuery $ .when всегда терпит неудачу: что такое $ .when, чтобы определить успех / неудачу? - PullRequest
0 голосов
/ 09 ноября 2011

Мне нужно объединить результаты в 2 сообщения и начать с отсроченного образца, найденного по адресу: http://api.jquery.com/jQuery.when/

var successFunction = function (event) { alert(event.readyState);  };
var failedFunction = function (event) { alert(event.readyState); };
$.when($.ajax("/page1.php", type: 'POST'), $.ajax("/page2.php", type: 'POST'))
  .then(successFunction , failedFunction );

В моем случае failFunction всегда срабатывает, даже если объект события и chrome сообщают о следующих свойствах:

readyState: 4
responseText: "OK"
status: 200
statusText: "OK"

те же результаты при использовании следующей формы:

$.when( $.ajax("/page1.php", type: 'POST'), $.ajax("/page2.php", type: 'POST'))
   .then(successFunction)
   .fail(failFunction);

что такое $ .when, чтобы определить успех / неудачу? Как получить $ .wen для запуска successFunction, когда readyState === 4 и status === 200? он ищет что-то еще, что я не отправляю с сервера?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2011

Спасибо за помощь.Я добавил ошибку: function (xhr, ajaxOptions, thrownError) к каждому из вызовов .ajax, что дало мне больше подробностей.Оба возвращали одну и ту же ошибку «Неожиданный токен O», потому что я возвращал «ОК».Как только я удалил возврат, проблема ушла.Не удалось попробовать проделанную технику, но я уверен, что это поможет в будущем.

0 голосов
/ 09 ноября 2011

jQuery ищет следующие коды состояния при проверке, был ли успешным запрос ajax

status >= 200 && status < 300 || status === 304   

Все остальное, кроме этого, будет считаться неудачным.

Поскольку у вас есть два ajax-запроса, я подозреваю, что один из них не выполняется.

Попробуйте записать ответы и посмотреть, какой из них не удается.

$.when($.ajax("/page1.php", type: 'POST'), $.ajax("/page2.php", type: 'POST')).done(function(a1,  a2){
    /* arguments are [ "success", statusText, jqXHR ] */
   console.log( a1[2] ); 
   console.log( a2[2] ); 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...