Заставить jQuery ждать - PullRequest
       6

Заставить jQuery ждать

0 голосов
/ 19 февраля 2012

В моем Ajax есть следующий код, который выполняет функцию перезагрузки страницы, когда время истекает.

if(time<=0)
{
    $(".time_remaining").html("Reloading the page now.");
    refresh();
}

refresh () выглядит следующим образом:

function refresh() {
  $.ajax({
    type: 'POST',
    url: 'index.php',
    data: 'refresh=true',
    timeout: 0,
    success: function(data) {
        $("#current_body").html(data);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
      $("#notice_div").html('Error contacting server. Retrying in 60 seconds.');
      window.setTimeout(update, 60000);
    }
});
};

Иногда код не обновляется, а обновляется, но с тем же содержимым, что и раньше (содержимое определенно меняется каждый раз). Я думаю, это может быть связано с тем, что index.php работает недостаточно быстро, но Ajax спешит выполнить

 $("#current_body").html(data); 

линия. Можно ли сделать так, чтобы Ajax задерживался между отправкой данных и печатью результата?

Ответы [ 3 ]

2 голосов
/ 19 февраля 2012

Обратный вызов success сработает только после того, как сервер вернет правильный ответ.

 $("#current_body").html(data); // this will be executed when
                                // the "slow" server finishes it's work

Так что нет, это никак не связано со скоростью сервера.

0 голосов
/ 19 февраля 2012

Попробуйте обновить ваш index.php до "index.php? T =" + (new Date ()). GetTime (), чтобы посмотреть, не нарушает ли это любое кэширование, из-за которого оно может возвращать тот же контент.

0 голосов
/ 19 февраля 2012

Функция успеха будет ожидать окончания загрузки ajax-запроса.Возможно, проблема в кеше.В ваших настройках установите cache: false и все должно быть в порядке:)

/ ** отредактировано, чтобы иметь больше смысла ** /

...