2016-10-20 9 views
0

POST編集:参考、Firefox 48が問題でした。 Firefox 50では、コードは意図したとおりに動作します。待機時間でもAJAX要求がページリロード前に実行されない

私たちの部門には小さなバグがある古いコードがありますが、私はAJAXに習熟していないので解決には問題があります。

ユーザーがWebページ上の要素をクリックすると、データベース内の1つの番号を変更する要求がトリガーされます。その後、待機時間があり、ページがリロードされます。これは、onclickのイベントで行われ、関連するコードです:

request('../lib/ajax_lists.php','sideedit',data); 
wait(500); //waiting until x ms passed 
window.location.reload(); 

一緒に、私はこれらの行をチェックして、彼らが意図したとおりに動作するように見えるが、ありません。 何が起こるかは、ブラウザが待機してからリロードするが、データベースは変更されていないということです。 次に、リクエスト機能が動作しているかどうかを確認し、DBクエリが正常であることを確認しました。しかし、私は要求の答えに印刷されたクエリを見るために、私はリロードを無効にしなければなりませんでした。今私はクエリを見ることができましたが、驚いたことにデータベースも変更されました。

私はさらにいくつかのテストを行なったし、これが結果です: ページのリロード機能が有効になっている場合

  • が、その中にデータベースクエリを含む要求が正常に実行されません。
  • リロード機能をコメントアウトすると、リクエストは意図したとおりに実行されますが、変更内容を確認するために必要なリロードは必要ありません。
  • 待ち時間は重要ではないようです。私は5000msにそれを上げたが、それでも動作していなかった。

+1

を試すことができます。 AJAXを使用すると、AJAXからの応答を取得し、[リロードせずに]ページを更新したいと考えています。 –

+0

ブラウザはリロード前に保留中のリクエストを中止する傾向があります。これもおそらくこれですリモートスクリプトが失敗します。 [PHPでこれを制御する設定があります](http://php.net/manual/en/function.ignore-user-abort.php) – apokryfos

+0

異なる方法で設計されている場合、リロードは必要ないと理解していますが、しかし書き直しは問題外です。 私はその設定を試す必要がありますが、それでも十分な時間があっても要求が正しく実行されないのはなぜかと思っています。 – user7048513

答えて

0

あなたはそれは*古いコードである*以下のコード

<script type="text/javascript"> 
    setTimeout(function(){ 
     window.location.reload(); 
    }, 500); 
</script> 
+0

しかし、これはユーザーの入力に関係なくページをリロードするだけで、ユーザーが要素をクリックしてリロードをトリガーした後ではありません。 – user7048513

+0

ページが読み込まれてから再度読み込まれてから500ミリ秒後に、ユーザーはトリガーを必要としません。しかし、ユーザトリガ、 '$( 'button')のコードブロックが必要です。クリック(function(){ setTimeout(function(){ window.location.reload(); }、500); }); ' –

関連する問題