Могу ли я сделать Ajax-запрос внутри текущего Ajax-запроса (например, для функции обратного вызова success)? - PullRequest
1 голос
/ 06 сентября 2010

У меня есть приложение jQuery, корзина покупок, которая отправляет информацию обратно на сервер, если поле ввода текста изменено. Это сделано в запросе Ajax. Теперь, если Ajaxrequest будет успешным, я хочу перезагрузить корзину покупок асинхронно. Код выглядит следующим образом:

$(document).ready(function() {

    var jInput = $(":input");
    jInput.change(function() {
        var vareAntal = $(this).val();
        var vareID = $(this).siblings("input#vareID").val();
        $.ajax({
            type: 'POST',
            url: 'checkout.aspx',
            data: { 'ID': vareID, 'Antal': vareAntal },
            success: function() {
                $("#newbasket").load(location.href + " #newbasket>*", "");
            }
        });
    });
});

Это работает, но только один раз! Если я изменю поле ввода текста, то после первой загрузки страницы div с идентификатором newbasket перезагружается асинхронно. Но если я попытаюсь изменить это снова, ничего не произойдет.

Я попытался выполнить некоторую отладку с помощью Firebug, и в первый раз, когда я изменяю поле ввода текста, он запускает POST-событие, а затем GET-событие, когда POST-событие успешно. Но после этого ничего не происходит, когда я снова изменяю поле ввода текста.

Итак, как мне добиться запуска метода .load () после каждого изменения ввода текста?

Я также пытался поэкспериментировать с функцией .ajaxComplete (), но это, конечно, привело к бесконечному циклу, поскольку .load () является ajax-объектом.

1 Ответ

1 голос
/ 06 сентября 2010

Вместо .change(func), используйте .live('change', func) здесь, вот так:

jInput.live('change', function() {

Это заставит селектор работать на любом добавлены новые входы.Когда вы заменяете элементы такими, какими вы являетесь в настоящее время, их обработчики событий теряются (или, скорее, не создаются заново, потому что у вас есть новые элементы)..live() как раз для этой цели, он прослушивает события от старых и новых элементов, независимо от того, когда они были добавлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...