2015-06-28 3 views
1

Мне нужно автообновить определенный div, я попробовал следующий код, но он делает много запросов на сервер вместо одного каждые 5 секунд.Авто Обновите div, используя jQuery

<script type="text/javascript"> 
     $(document).ready(function() { 
      refresh(); 
     }); 

     function refresh() { 
      $.get('site', function(result) { 
       $('#div').html(result); 
      }); 
      setTimeout('refresh()', 5000); 
     } 

    </script> 
+2

Использование строки является действительным и работает, поэтому, вероятно, это не проблема, даже это не должно быть сделано, потому что она внутренне интерпретирует строку. – adeneo

+0

Вы должны использовать setInterval вместо таймаута и вне самой функции обновления, потому что он падает в бесконечном цикле текущей функции –

+2

FYI, таймаут должен быть внутри обратного вызова, иначе рекурсивная функция на самом деле не имеет смысла. – adeneo

ответ

1

Если вы хотите, чтобы вызвать функцию каждые 5 секунд, используйте setInterval вместо этого.

$(document).ready(function() { 
    var interval = setInterval(refresh, 5000); 
}); 

function refresh() { 
    $.get('site', function (result) { 
     $('#div').html(result); 
    });  
} 

Кроме того, используйте clearInterval(interval) очистить интервала.

Примечание: Любой интервал/тайм-аут/рекурсивная функция с таким случаем срабатывают независимо от того, вернулся ли запрос .get().

Смежные вопросы