0

チェックボックス付きのフォームを備えたホームページを持つアプリケーションがあります。chk-bxs は、MySQL データベースから返される列データを表します。

私が達成しようとしている動作は次のとおりです。

  1. ユーザーがホームページのチェックボックスをオン/オフにする
  2. ユーザーは、クエリを実行するページへのリンクをクリックします
  3. サーバーは、ホーム ページのアンロードによってトリガーされる getJSON 呼び出しを介してチェック ボックスの状態を受け取ります。PHP は $_SESSION[] を chk-bxs 状態でロードします
  4. 次に、サーバーは $_SESSION[] のデータを使用してリンク呼び出しを処理し、どの列データを返して表に表示するかを決定します。

getJSON呼び出しの最後のメンバー割り当てにブレークポイントを置き、それをシングルステップで実行した場合、これを達成できます。シングルステップがないと、getJSON 呼び出しは行われないようです。そのため、chk-bxs の値はサーバーに送信されません。誰でもこの動作を説明できますか? 問題にアプローチするより良い方法はありますか?任意の考えをいただければ幸いです。

これは、getJSON 呼び出しを行う関数を呼び出す index.php ファイルの head セクションのコードです。

$(window).on('beforeunload', function(){
indexFormUnload(); // this saves the state of the SELECT check-boxes
}); 

これは、getJSON 呼び出しを構築するコードです。これは、index.php ファイルに含まれる別のファイルにあります。

function indexFormUnload(){
var ckBxValues = $(":input").serializeArray();
$.getJSON("ajaxJQ_server.php", // server page called by jquery
{ // Data sent via ajaxJQ
"callingForm": "index",
"callingElementID" : null,
"locStorage": ckBxValues,
"callingState": "unload",
"tableName": null
}
);
} 
4

1 に答える 1

0

ブラウザを閉じると、開いているすべての接続が切断されます。彼らはパフォーマンスのためにそれを行います。競合状態があり、ほとんどの場合勝つことはありません。サーバーに対して呼び出しが行われたことを確認する方法はありません。以前はwhileループでそれを行う方法がありましたが、ブラウザーはそれを殺しました。

于 2012-11-20T16:44:36.797 に答える