web-dev-qa-db-ja.com

Ajaxの成功後にページをリロードする

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

15
bosniamaj

BrixenDKは正しい。

すべてのajax呼び出しが完了したときに実行される.ajaxStop()コールバック。これは、ハンドラーを配置するのに最適な場所です。

$(document).ajaxStop(function(){
    window.location.reload();
});
46
Vikas Naranje

Ajaxが完了したら、ajaxStopを使用してコードを実行します。

$(document).ajaxStop(function(){
  setTimeout("window.location = 'otherpage.html'",100);
});
12
brixenDK

これを使用してください ページの再読み込み

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); 
   }
}
4
naveen kumar