2010-09-06 2 views
1

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

$(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

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

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

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

+0

Спасибо, это работает как шарм! – MadsMadsDk

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