2010-02-25 5 views
1

У меня есть простая команда AJAX JQuery для обновления корзины (запускаемое изменением списка выпадающего списка):Почему jQuery ajax успешный обратный вызов вызван отмененным вызовом AJAX?

$.ajax({ 

    type: "POST", 
    url: $.url("updateCart"), 
    data: data, 
    dataType: "json", 

    success: function (data, status, req) { 

     alert(data + " - " + status + " - " + req); 

    }); 

Оказывается, что в JQuery 1.4.x поведение призвания success обратного вызова изменился.

Если вы отправляете запрос AJAX, а затем нажмите кнопку «регулярная» кнопка отправки формы HTML, он мгновенно отправит «null» на обратный вызов успеха. Таким образом, для приведенного выше примера, если я вызвать событие AJAX, а затем нажмите кнопку не-AJAX представить - он отображает предупреждение:

null - success - [object XMLHttpRequest] 

Скрипач проверяет для меня, что ответ AJAX еще не вернулся с сервера - все же вызывается метод success.

Это нарушало некоторые из моего кода, потому что он ожидал, что данные будут существовать.

Я отлично разбираюсь в null, если мне нужно - я просто не могу найти документацию об этом изменении в jQuery.

Так что мне интересно, это ошибка или по дизайну?

+0

Было бы полезно увидеть обработчик событий, который обычно запускает функцию ajax. – Anthony

+0

@anthony это действительно не имеет значения. его просто выпадающее событие изменения. если никто не получит ответ на этот вопрос, я создам правильный примерный проект, но если его явная известная ошибка или по дизайну, я бы скорее не потратил на это больше времени. thx –

ответ

1

Я думаю, что это ошибка, и я заполнил билет в jQuery для отслеживания ошибок. (http://dev.jquery.com/ticket/6172)

Эта ошибка не существует в jQuery 1.4.0 и ранее.

+0

спасибо! доски объявлений и тому подобное, кроме stackoverflow, меня пугают :-) возможно, вы захотите добавить, что успех вызывается при вызове submit - на всякий случай, это не тот же самый триггер. –

+0

поведение отличается в разных браузерах тоже –

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