ajax + jquery обновить div после обработки формы

artalex
На сайте с 08.12.2005
Offline
144
9236

Добрый день. Опять прошу помочь с аяксом... Пишу корзину.

Форма добавления товара имеет id="neworder".

DIV, в который выводятся результаты обработки формы имеет id="neworderresult"

DIV, в котором подгружается скрипт корзины имеет id="thebasket"

Аякс такой:


jQuery("#neworder").livequery('submit', function(){ // использую livequery
var str = jQuery(this).serialize();
jQuery.ajax({
type: "POST",
url: "neworder_process.php", // в этот обработчик формы шлю post-ом переменные
data: str,
success: function(msg){ // когда получен ответ

jQuery("#neworderresult").ajaxComplete(function(event, request, settings){

result = msg;
jQuery(this).html(result); // пишу результат в слой neworderresult

if(result.search('orderadded') != -1) // если в результате имеет быть в наличии нужная строка, то...
{
// вот это зацикливается - выполняется без остановки...
jQuery("#thebasket").fadeOut();
jQuery("#thebasket").load('basket.php');
jQuery("#thebasket").fadeIn();
}


});
}
});
return false;
});

Происходит вот что: После обраотки формы слой thebasket "гаснет", в него загружается вывод обновленной корзины (basket.php) и слой опять "зажигается". Все происходит красиво...:) НО - процесс этот зацикливается, - то-есть повторяется каждую секунду...

Как остановить это обновление... Я так понимаю, что у меня ajaxComplete не находит выхода...

Кто может помочь?

T
На сайте с 13.01.2009
Offline
20
#1

Возможно, я не всё понимаю, но зачем внутрь callback-обработчика success()

включать вызов ajaxComplete() ? При входе в sucсess() запрос (асинхронный) уже

успешно выполнен и в параметре msg передан результат (у вас в виде plain text). Тут же вы можете уже обратиться к любым элементам DOM-дерева (в том числе и к #neworderresult) и выполнить требуемые действия.

artalex
На сайте с 08.12.2005
Offline
144
#2

tvolf, спасибо большое... я действительно, перемудрил...

убрал ajaxComplete вообще. Работает.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий