Обновление блока на ajax

Тема в разделе "JavaScript", создана пользователем Doctor_Chaos, 28 сен 2013.

Модераторы: ZiX
  1. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    950
    Симпатии:
    645
    Нужно было реализовать обновление блока с помощью ajax jquery. Нагуглил решение на setinterval, но оно нещадно выедало память, тогда нашел такое решение:
    <script> function show() { $.ajax({ url: "/script.php", cache: false, success: function(html){ $("#new").html(html); $('#liquid1').liquidcarousel({width:800, height:100, duration:100, hidearrows:false}); setTimeout(show,1000);} });} $(function() {
    show();
    }); </script>
    В итоге сжирает памяти заметно меньше, но все-таки сжирает - минут через 5 браузер все-таки начинает подвисать. Возможно как-то решить эту проблему вообще?
     
  2. vipTelnet

    vipTelnet Постоялец

    Регистр.:
    14 янв 2013
    Сообщения:
    134
    Симпатии:
    11
    Код:
    function show() {
        $.ajax({ url: "/script.php",
                cache: false,
                success: function(html){
                    $("#new").html(html);
                    $('#liquid1').liquidcarousel({width:800, height:100, duration:100, hidearrows:false});
                    setTimeout(show,1000);
                }
        });
    }
    $(function(){
        show();
    });
    Не могу понять что имено у Вас жрет эту память
    постоянный перезапуск функции или то что Вы запускаете liquidcarousel какую то там карусель
    и вообще из приведенного Вами кода не ясно $('#liquid1') входит в получаемый от сервера ответ, т.е в блок $("#new").html(html); или нет
     
  3. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    950
    Симпатии:
    645
    Да, выжирала карусель память, разобрался уже сам. Теперь другая проблема - этот код не работает в IE
     
  4. vipTelnet

    vipTelnet Постоялец

    Регистр.:
    14 янв 2013
    Сообщения:
    134
    Симпатии:
    11
    ну тут я Вам точно не помогу, если Вы не если не дадите ссылку на Ваш сайт
     
  5. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    950
    Симпатии:
    645
  6. vipTelnet

    vipTelnet Постоялец

    Регистр.:
    14 янв 2013
    Сообщения:
    134
    Симпатии:
    11
    Да браузер реально тормазит
    Не могу понять смысл Ваших действий зачем Вы каждую сек
    спрашиваете браузер и получаете один и тот же ответ
    Верхняя галерия та что в блоке liquid1 вообще статичная, т.е не имеет возможности прокрутки
    В ИЕ 10 работает, ниже нет
    но это может быть связано с тем что Вы используете Jquery 1.10 в этом есть реальная необходимость или 1.8.3 будет достаточно
    да вижу что Вы там используете и мигратор, но я для тех проектов которые требуют поддержки старых ие пока не решаюсь использовать версию 1.10
     
  7. Doctor_Chaos

    Doctor_Chaos Проктолог-гинеколог

    Moderator
    • Супермодератор
    Регистр.:
    7 сен 2013
    Сообщения:
    950
    Симпатии:
    645
    При добавлении новых фото они там отображаются. Для этого и делалось.
     
  8. vipTelnet

    vipTelnet Постоялец

    Регистр.:
    14 янв 2013
    Сообщения:
    134
    Симпатии:
    11
    хорошо ладно для отображения новых фоток
    ну а виджет галлерии зачем Вам там нужен
    $('#liquid1').liquidcarousel
    на этом блоке новых изображений,
    не проще просто добавлять новые изображения в конец списка а не присылать каждый раз
    HTML:
    <table width="400" border="0" cellspacing="5" cellpadding="0">
                        <tr valign="top">
                          <td width="4%"></td>
                          <td width="96%"><table width="70%" border="0" cellspacing="3" cellpadding="0">
                              <tr>
    
              <td height="30" class="headtext">Новые фото</td>
                              </tr>
                              <tr>
    
              <td valign="top"><table width="400" border="0">
                      <tr>
                    <td>
    
    
    <table width="400" border="0" cellspacing="3" cellpadding="0" id="menu">
    <div id="liquid1" class="liquid"  >
                        <div class="wrapper" style="height:110px;"><center><p><a href="/277211030" ><img style="margin:5px; margin-right:25px; width: 100px; border:0; position: relative;" src="/new_entry/277211030.jpeg" border=0 alt="Фотографии / Без категории" title="Фотографии / Без категории" ></a> <a href="/277206l30" ><img style="margin:5px; margin-right:25px; width: 100px; border:0; position: relative;" src="/new_entry/277206l30.jpeg" border=0 alt="Фотографии / С веб-камеры" title="Фотографии / С веб-камеры" ></a> <a href="/277193g30" ><img style="margin:5px; margin-right:25px; width: 100px; border:0; position: relative;" src="/new_entry/277193g30.jpeg" border=0 alt="Фотографии / С веб-камеры" title="Фотографии / С веб-камеры" ></a> <a href="/277184s30" ><img style="margin:5px; margin-right:25px; width: 100px; border:0; position: relative;" src="/new_entry/277184s30.jpeg" border=0 alt="Фотографии / С веб-камеры" title="Фотографии / С веб-камеры" ></a> <a href="/27717be30" ><img style="margin:5px; margin-right:25px; width: 100px; border:0; position: relative;" src="/new_entry/27717be30.jpeg" border=0 alt="Фотографии / С веб-камеры" title="Фотографии / С веб-камеры" ></a> </p></center></div></div>
    
                      </table>
    
    </td>
                  </tr>
    т.е шлите не все эту лабуду с полным кодом Вашей галлерии а только пути к вновь добавленным изображениям и потом заменяйте ими пути в картиках слева или справа что б там показывались новые фото
    И мой Вам совет не используйте jquery 1.10 если в этом действительно нет необходимости, не знаю может и не сильно правильно но я Вам уже писал что я б его не стал использовать для проектов у которых есть не необходимость поддержки старых браузеров.
     
    Последнее редактирование: 1 окт 2013