4

Webアプリにデータを「保存」してからページをリロードするために、複数のajaxリクエストを作成しています。(リクエストが非同期で行われるため) ajax 呼び出しが完了する間または完了する前に、ページがリロードされる状況に遭遇しました。これに対する簡単な解決策は、"async": false オプションをオンにして ajax 呼び出しを行い、同期呼び出しを強制することでした。これは機能しているように見えますが、呼び出しが実行される前に実行されるダイアログ ボックス コードは、実行中に遅延が発生します。

どんなアドバイスでも大歓迎です!

また、リロードの前に alert() を配置すると、ajax リクエストの実行が許可されることに注意してください。(アラートは明らかに、リクエストが正常に処理されるのに十分な時間、リロードを遅らせています)

コードサンプルで更新:

$(".submit_button").click(function(){ 
    popupMessage();
    sendData(); //the ajax calls are all in here
    location.reload();
});


function sendData() {
    //a bunch of these:
    $.ajax({
    "dataType": "text",
    "type": "POST",
    "data": data,
    "url": url,
    "success": function (msg) {}
    }).done(function( msg ) {

    }); 
}
4

4 に答える 4

2

たとえば、リクエストの実行方法によって異なります(フォームの送信は行いません。それ以外の場合は、フォームの送信を防ぐ必要があります)

$.ajax({
   url: 'some_url',
   type:    'GET',
   data: 'var1=value1&var2=value2',
 success: function(){
   //do smth
 },
 error: function(){
   alert(w.data_error);
   document.location.reload(); 
 }
 complete: function(){ //A function to be called when the request finishes (after success and error callbacks are executed) - from jquery docs
   //do smth if you need
   document.location.reload(); 
 }
});

完全なブロックを見てみましょう

于 2013-01-31T18:52:19.573 に答える
1

これは役に立ちます。

$("body").load("default.aspx");

説明: サーバーからデータをロードし、返された HTML を一致した要素に配置します。 http://api.jquery.com/load/

于 2013-06-19T13:37:08.207 に答える
0

ここで言及されていないので、これを追加します。

document.location.reload() で ajax 呼び出しを使用したときにコンテンツが更新されないように見える場合は、パラメーターとして true を reload 関数に追加します。これにより、キャッシュされたバージョンのページを使用しないように指示されます。サーバーへの新しい呼び出しを強制します。

したがって、ページをリロードするスクリプトは次のようになります。

document.location.reload(真);

于 2020-08-05T13:54:10.210 に答える