Перезагрузите страницу после успеха AJAX - PullRequest
14 голосов
/ 24 октября 2011

У меня есть некоторые проблемы с перенаправлением / перезагрузкой после успешного вызова ajax.Вот ситуация:

У меня есть элемент для удаления, сохраненный в массиве.Когда я нажимаю на кнопку, она вызывает файл PHP через ajax, и после успеха мне нужно перезагрузить страницу.Но у меня есть некоторые проблемы с этим.Я искал в интернете и не смог найти работающего решения.

У меня есть файл PHP, который проходит через массив, удаляя элемент за элементом из базы данных.

foreach($arrayVals as $key=>$val)
{
    //bla bla
}

Также у меня есть jQueryчасть:

$("#button").live("click",function(){
    $.ajax({
        url, data, type... not important
        success: function(html){
                    location.reload();
                }
    });
});

Я имею в виду, код работает, но не хорошо.Он удаляет элементы, но не все, а затем перезагружает страницу.Например, если у меня есть 10 элементов для удаления, он удаляет, как 6-7, а 3-4 элемента остаются не восстановленными.

Он действует так, как будто слишком быстро перезагружает страницу, как будто PHP-файл не имеет достаточно времени дляобрабатывать все: D

Ответы [ 3 ]

46 голосов
/ 25 октября 2011

BrixenDK прав.

.ajaxStop() обратный вызов выполняется после завершения всех вызовов ajax.Это лучшее место для размещения вашего обработчика.

$(document).ajaxStop(function(){
    window.location.reload();
});
12 голосов
/ 24 октября 2011

Вы используете ajaxStop для выполнения кода после завершения ajax:

$(document).ajaxStop(function(){
  setTimeout("window.location = 'otherpage.html'",100);
});
3 голосов
/ 23 октября 2016

используйте это Перезагрузить страницу

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); 
   }
}
...