Я использую MVC с некоторыми частичными рендерингами и ajax-вызовами. В одной из моих таблиц результатов у меня есть поле, которое является таймером.setInterval javascript calls не исчезают после загрузки ajax
Следующий код на моем частичном изображении, который отображается каждые 30 секунд. Одно из полей является активным таймер, который показывает пользователю:
<td><div id="@someID" class="nobutton"></div><script>setInterval(function() { startTimer('@startDateTime', '@someID') }, 500);</script></td>
Это прекрасно работает, но после того, как вызов Ajax сделан, чтобы обновить частичное, интервальной функции по-прежнему называя старые удостоверения личности (someID), что больше нет.
Вот Javascript для таймера:
<script type="text/javascript">
function startTime(dt, field){
var field = document.getElementById(field);
if (field == null)
return;
var rowTime = new Date(dt);
var rowTimems = rowTime.getTime(rowTime);
var currentTime = new Date();
var currentTimems = currentTime.getTime(currentTime);
var difference = currentTimems - rowTimems;
var hours = Math.floor(difference/36e5),
minutes = Math.floor(difference % 36e5/60000),
seconds = Math.floor(difference % 60000/1000);
field.innerHTML = formatTime(hours) + ":" + formatTime(minutes) + ":" + formatTime(seconds);
</script>
и вызов на главной странице, которая обновляет парциальное довольно прост:
var t = setInterval(function() {
$.ajax({
url: "MYURL",
type: "GET",
cache: false,
success: function (data) {
$("#summary").html(data);
}
});
}, 30000);
Есть ли способ, чтобы убить Старожилы? Почему они все еще работают?
Необходимо снова очистить интервал перед повторным обновлением ajax. – PSL