Повторяется обработка JS

209
27 февраля 2018, 07:16

Добрый день, подскажите, пожалуйста, я сделал, чтобы на сайте(главной странице) выводился список из 5 последних тех с форума,но, при переходе на любую другую вкладку (например 'О нас') и при возврате назад, скрипт обрабатывается еще раз и получается уже 10 последних тем, как это исправить? чтобы при переходе назад (при нажатии в окне браузера стрелочки назад) так же было 5 тем.Спасибо

  function try_latest_forum_posts() {
    var latest_forum_posts_block = $('#message.latest_forum_posts')
    console.log('latest_forum_posts_block: ', latest_forum_posts_block)
    if (latest_forum_posts_block.length === 1) {
      get_latest_forum_posts(latest_forum_posts_block)
    }
  }
  function get_latest_forum_posts(latest_forum_posts_block) {
    $.ajax({
      type: 'get',
      url: 'https://sign-forum.ru/api/v1/api.php?action=getLastPosts&limit=5',
      dataType: 'json',
      cache: false,
      async: true,
      error: function(jqXHR, textStatus, errorThrown) {
        console.log('- Ошибка получения последних сообщений форума.')
      },
      success: function(data, textStatus, jqXHR){
        var box = latest_forum_posts_block.children('div.box')
        if (!box.length) {
          return null
        }
        console.log('data: ', data)
        for(var i=0, l=data.length; i<l; i++) {
          var post = data[i]
          var link = post['topic_link'] || '#'
          var text = post['topic_title'] || ''
          var html = '\
<div class="row">\
  <div class="wrapper_text">\
  <a href="' + link + '" target="_blank" class="txt">' + text + '</a>\
  <!--<div class="count">9</div>-->\
  </div>\
</div>\
          '
          box.append(html)
        }
Answer 1
box.empthy();
box.append(html);

Попробуйте так

Answer 2

Нужно смотреть код. Так с ходу не скажешь. Первое, что пришло в голову, это повесить флаг. Выполнять загрузку тем только, если он true. После загрузки тем флаг менять в false.

Или же при загрузке страницы каждый раз очищать массив (или что у вас там), в который кладется ваши 5 тем. А потом заново их класть туда и выводить на странице.

READ ALSO
Не работает accessToken instafeedjs.com

Не работает accessToken instafeedjs.com

Сделал приложение в Instagram, получил cliendIDПрошел авторизацию, получил accessToken

200