Мне кажется ajax работает не корректно

Голоса: +1

Уже создавал новость с похожим содержанием, мне посоветовали использовать информеры, но они мне не подходят. Занялся более детальным изучением проблемы, подробно расписанной в этом вопросе (по поводу переключения страниц с новостями, при помощи скрипта)

Сам скрип работает вполне корректно, так как новости на страницу выводятся, проблемма возникает при переходе со страницы на страницу и вот почему я решил, что проблема именно в ajax

 Поясню почему я пришел к такому выводу. 
Во первых, на странице с кодами, это первое слово, относящееся непосредственно к ошибке. 


Во вторых, судя по пояснениям в настройках сайта, этот модуль отвечает за переключение страниц на сайте, а конкретно, за то, что бы обновлялась не вся страница, а только одна её часть. А проблема как раз и возникает при обновлении скрипта на странице, то есть выходит при обновлении части страницы.


В третьих если в скрипт внести изменения в строке 
 $.get('/news/1-0-'+catId+'-0-0-0-1',function(data) написать 
 $.get('/news/2-0-'+catId+'-0-0-0-1',function(data) то на страницу выводится новости не с 1 по 10, а с 11 по 21, то есть новости со второй страницы. получается, что проблема не в самом скрипте, а в том, что не корректно происходит переход с одной страницы на другую, а за это дело как раз и отвечает ajax

Ну и наконец, при влюченном ajax адрес страницы меняться не должен, должно обновится только содержимое относящееся к скрипту, а в адресной строке четко видно, что произошел переход на другую страницу вместо обновления текущей.

Адрес сайта mbou58.ru
| Автор: | Категория: Ajax

Ответов: 2

голоса: +2
 
Лучший ответ

В вашем коде Ajax только один раз срабатывает. Соответственно, на страницы-переключатели нужно вешать отдельный обработчик.

Поставьте вместо вашего скрипта такой код

<div id="news">
  <script> 
    var catId=33;
    $.get('/news/1-0-'+catId+'-0-0-0-1',function(data){ 
      $(data).find('cmd[t="allEntries"]').each(function () {
        $('#news').html($(this).text());
      });
   }); 
  </script>
</div>

<script>
  $(document).ready(function(){
    $('body').delegate('.swchItem', 'click', function (event) {
      event.preventDefault();
      var url = $(this).attr('href');
      $.get(url,function(data){ 
        $(data).find('cmd[t="allEntries"]').each(function () {
          $('#news').html($(this).text());
        });
      }); 
   });
  });
</script>

 

| Автор:
Спасибо, ваше дополнение помогло. проблема решилась, хотя я всё же не понимаю, почему это дополнение вдруг понадобилось. 2 года сайту, всё работало как часы и вот, меньше месяца назад (или около того) вдруг полетело.

 

Ещё раз спасибо за дополнение.
Голоса: +1

Сам скрип работает вполне корректно, так как новости на страницу выводятся, проблемма возникает при переходе со страницы на страницу и вот почему я решил, что проблема именно в ajax

>> Проверил, все отлично работает той ошибке о которой вы выше говорите не наблюдаю.

| Автор:
Хотя нет, на главной имеется проблема, но перейдя по адресу - http://mbou58.ru/news/1-0-33 все корректно работает.
На данный момент, как временное решение, ссылка в меню "Главная" ведет сразу на раздел главных новостей. Если перейти на страницу mbou58.ru  и попытаться переключить страницу, то вылетит именна та ошибка, которую я столь подробно расписал. Я по этому и писал вопрос про редирект недавно, что хотел сразу с mbou58.ru перенаправлять на страниц раздела главные новости школы. Но это тоже полумера, так как у каждого класса в школе есть своя страничка, на которой стоит тот же скрипт основанный на корректной работе ajax и там такой вариант не пройдет.

Вот несколько ссылок на страницы классов, попробуйте переключить страницы, везде одно и то же.

http://mbou58.ru/index/0-36

http://mbou58.ru/index/0-29

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

p.s. Тот адрес, который вы указали, это конкретный раздел новостей, а скрипт до совсем недавнего времени вписывал этот раздел в страницу и переключатель вполне отлично его обрабатывал Ну и как я уже писал, сам скрипт до сих пор работает. эксперимент  с его изменением это подтвердил,выводит что положено, а вот переключение страниц полетело
...