[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Аякс всё дольше
Pandion
делаю сайт полностью на аяксе и столкнулся с таким:

например, смена очерёдности строк(кнопки вверх-вниз) чем больше нажимаю, тем дольше грузится. После F5 снова становится быстро и снова по нарастающей

так и должно быть?

код:
       $.ajax({
type: "POST",
url: //url,
cashe: false,
data: //данные
success: function(html){
$("body").html(html);
})




Спустя 31 минута, 19 секунд (10.01.2012 - 12:58) Invis1ble написал(а):
может причина не в этом участке кода?

Спустя 26 минут, 13 секунд (10.01.2012 - 13:24) Pandion написал(а):
а, файрбаг показал: один и тот же post-запрос, посылаемый в аяксе, может выполнится 1 раз(как ему и следует), а может - сейчас посмотрел - 8 раз подряд ohmy.gif всё вркмя по-разному
отчего?? там обычная click-функция и кликаю я 1 раз...

Спустя 9 минут, 5 секунд (10.01.2012 - 13:33) Invis1ble написал(а):
click повешен на динамический объект DOM ?

Спустя 4 минуты, 19 секунд (10.01.2012 - 13:37) nugle написал(а):
Invis1ble
я думаю, если на динамический, то просто выполнялось бы один раз

Спустя 1 минута, 6 секунд (10.01.2012 - 13:38) Invis1ble написал(а):
как раз таки сам частенько наступал на подобные грабли

Спустя 15 минут, 31 секунда (10.01.2012 - 13:54) nugle написал(а):
Invis1ble
я имею ввиду у ТС работает несколько раз, но притормаживает с каждым разом => click повешен не на динамический дом

Спустя 13 минут, 30 секунд (10.01.2012 - 14:08) Pandion написал(а):
в котроллере создаётся переменная, в ней собирается html(в том числе объект, на который кликаю) и в echo. но какая разница?

nugle, не-не, выяснилось, что за один клик может посылаться много раз один и тот же запрос. потому и то тормозит, то нет

Спустя 2 минуты, 8 секунд (10.01.2012 - 14:10) Invis1ble написал(а):
покажи html, на который повешен click и js-код с обработчиком события

Спустя 5 минут, 23 секунды (10.01.2012 - 14:15) Pandion написал(а):
<span class="menu_up">^ </span>

 $(".menu_up").live("click", function(){
if($(this).parent().parent().find("td span.menu_item_ord").text() != 1){
menu_item_ID = $(this).parent().parent().attr("rel");
old_ord = parseInt($(this).parent().parent().find("td span.menu_item_ord").text());
new_ord = old_ord - 1;
other_menu_item_ID = $("#menu_items tr td span.menu_item_ord:contains('"+new_ord+"')").parent().parent().attr("rel");
$.ajax({
type: "POST",
url: "/admin/second/?route=second",
cashe: false,
data: "new_ord="+new_ord+"&old_ord="+old_ord+"&menu_item_ID="+menu_item_ID+"&other_menu_item_ID="+other_menu_item_ID,
success: function(html){
$("body").html(html);
}
}
);
}
}
)

Спустя 3 минуты, 32 секунды (10.01.2012 - 14:19) Pandion написал(а):
наверно, вместо live надо bind...

Спустя 3 минуты, 5 секунд (10.01.2012 - 14:22) Invis1ble написал(а):
как я и предполагал - событие обрабатывается несколько раз из-за того, что повешено на динамический объект

можно попробовать юзать .die() в success

Спустя 11 минут, 28 секунд (10.01.2012 - 14:33) Invis1ble написал(а):
блин, что-то я торможу, не могу вспомнить как решал такую проблему...
вобщем причину думаю ты понял, если вспомню решение - напишу

Спустя 7 минут, 41 секунда (10.01.2012 - 14:41) Pandion написал(а):
с die() стало чуть дольше обрабатываться, но запрос посылается 1, вроде, постоянно

спасибо

Спустя 5 минут, 50 секунд (10.01.2012 - 14:47) nugle написал(а):
попробуй .on('click', function(){}) Он объединяет и bind() и live(). отключается он off()

Спустя 2 дня, 1 час, 15 минут, 39 секунд (12.01.2012 - 16:02) Guest написал(а):
нет, всё-таки die не помогает. тестирую on/off
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.