Обычно я получаю 3-4 параллельных запроса в таких ситуациях, чтобы поместить вызов setTimeout()
в функцию, которую я хочу запустить несколько раз.
function refresh() {
$.ajax({
url: '{% url monitor-test %}',
success: function(data) {
$('#test').html(data);
}
});
setTimeout(refresh, 10000);
}
$(function(){
refresh();
});
Это делает его таким, что каждый раз, когда вызывается функция refresh
, он автоматически настраивается на повторный вызов через 10 секунд. Другая идея (если у вас все еще есть проблемы) состоит в том, чтобы переместить setTimeout
в функцию успеха в вызове AJAX:
function refresh() {
$.ajax({
url: '{% url monitor-test %}',
success: function(data) {
$('#test').html(data);
}
setTimeout(refresh, 10000);
});
}
$(function(){
refresh();
});
Эта опция может быть немного неуклюжей, если по какой-либо причине вызов AJAX не будет успешным. Но вы всегда можете обойти это с другими обработчиками, я полагаю ...
У меня есть одно предложение (не связанное с вашим вопросом) - поместить в шаблон, который вы отображаете, целую вещь <table>
и вернуть ваше представление temperature
. Итак, в вашем основном шаблоне:
<div id="test">
{% include 'testing.html' %}
</div>
и testing.html
:
<table><tr>
{% for label, value in temperature.items %}
<td>{{ label }}</td>
<td>{{ value }}</td>
{% endfor %}
</tr></table>
Что-то из-за вставки части таблицы, как у вас сейчас, заставляет меня плакать :) Отправка еще нескольких байтов по проводам в вызовах AJAX не должна повредить.