Перезагрузить страницу после показа сообщения, jQuery - PullRequest
14 голосов
/ 06 декабря 2011

Прямо сейчас у меня есть форма, где пользователь вводит информацию. Затем он обрабатывается с помощью функции jjuery ajax и устанавливается на return false;, поэтому перезагрузка страницы после отправки формы пользователем не происходит. Хотя мне нужно перезагрузить страницу, но если я удаляю return false;, она обновляет страницу до того, как появится сообщение об успешном завершении (это сообщение отображается после того, как пользователь отправил данные).

     $.ajax({
      type: "POST",
      url: "scripts/process.php",
      data: dataString,
      success: function() {
       $("#st_message").html("<p> Your article was successfully added!</p>");
       //I need to reload page after the above message is shown
      }
     });
    return false;

Итак, как я могу перезагрузить страницу после отображения сообщения <p> Your article was successfully added!</p> с небольшой задержкой, скажем, 2-3 секунды, чтобы пользователь действительно мог прочитать сообщение.

Ответы [ 8 ]

27 голосов
/ 06 декабря 2011

Вы можете добавить задержку, используя функцию setTimeout(), например:

// This will reload the page after a delay of 3 seconds
window.setTimeout(function(){location.reload()},3000)

Для ваших нужд:

$.ajax({
      type: "POST",
      url: "scripts/process.php",
      data: dataString,
      success: function() {
           $("#st_message").html("<p> Your article was successfully added!</p>");
           window.setTimeout(function(){location.reload()},3000)
      }
});
return false;

Рабочий пример

4 голосов
/ 06 декабря 2011

Сделайте это с чем-то вроде:

function delayedRedirect(){
    window.location = "/index.php"
}

setTimeout('delayedRedirect()', 3000)

setTimeout используется для задержки вызова функции перенаправления, в этом случае вы можете перенаправить куда-то на новый URL (на тот случай, если вам это тоже нужно).

В противном случае используйте location.reload() для перезагрузки страницы.

2 голосов
/ 25 января 2013

Использование тайм-аута - очень плохая идея.

2 голосов
/ 06 декабря 2011

Используйте метод setTimeout, чтобы получить задержку, и метод reload, чтобы перезагрузить страницу. Обратите внимание на параметр true в вызове reload, чтобы убедиться, что страница действительно перезагружается, а не просто перерисовывается из кэша.

window.setTimeout(
  function(){
    location.reload(true)
  },
  3000
);
2 голосов
/ 06 декабря 2011

дайте, используя

setTimeout("window.location='yourpage.php'",3000);

в вашем коде:

 $.ajax({
       type: "POST",
       url: "scripts/process.php",
       data: dataString,
       success: function() {
        $("#st_message").html("<p> Your article was successfully added!</p>");
        setTimeout("window.location='yourpage.php'",3000);//reload after 3 sec.
       }
      });
 return false;
2 голосов
/ 06 декабря 2011

Вы имеете в виду что-то вроде: window.location.reload() в JavaScript

1 голос
/ 01 сентября 2012
<script type="text/javascript">
 //
 //your action here
 //
 window.setTimeout(function(){self.parent.location="?list"},3000);//after 3 sec go to (?list or example.html page)
 return false;
</script>
1 голос
/ 06 декабря 2011
 $.ajax({
  type: "POST",
  url: "scripts/process.php",
  data: dataString,
  success: function() {
  var miliseconds = 2000;

   $("#st_message").html("<p> Your article was successfully added!</p>");
   setTimeout("window.location=window.location", miliseconds);
   //I need to reload page after the above message is shown
  }
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...