jQuery Обновить / Обновить страницу, если Ajax Успешная после времени

Я использую Jquery для вызова Ajax. Сервер возвращает объект Json со значением "истина или ложь" следующим образом:

return Json(new { success = false, JsonRequestBehavior.AllowGet });

Есть ли способ обновить страницу через 5 секунд, если сервер вернет true?

8 ответов

Решение

В вашем успешном обратном вызове ajax сделайте это:

success: function(data){
   if(data.success == true){ // if true (1)
      setTimeout(function(){// wait for 5 secs(2)
           location.reload(); // then reload the page.(3)
      }, 5000); 
   }
}

Если вы захотите перезагрузить страницу через 5 секунд, вам потребуется тайм-аут, как указано в ответе.

    location.reload();

Вы можете использовать функцию перезагрузки в вашем условии if для успеха, и страница перезагрузится после условия успеха.

if(success == true)
{
  //For wait 5 seconds
  setTimeout(function() 
  {
    location.reload();  //Refresh page
  }, 5000);
}

Я предпочитаю этот способ Использование ajaxStop + setInterval,, это обновит страницу после любого запроса XHR[ajax] на той же странице

    $(document).ajaxStop(function() {
        setInterval(function() {
            location.reload();
        }, 3000);
    });
var val = $.parseJSON(data);
if(val.success == true)
{
 setTimeout(function(){ location.reload(); }, 5000);

}

Просто используйте

          $.ajax({
        success: function (response) {
            location.reload();
            },
        error : function(xhr,errmsg,err) {
        console.log(xhr.status + ": " + xhr.responseText); // provide a bit more info about the error to the console
    }
    });
$.ajax("youurl", function(data){
    if (data.success == true)
    setTimeout(function(){window.location = window.location}, 5000); 
    })
)

Здесь много хороших ответов, просто из любопытства после изучения этого сегодня, не лучше ли использовать setInterval а не setTimeout?

setInterval(function() {
location.reload();
}, 30000);

дайте мне знать ваши мысли.

Другие вопросы по тегам