-1

searchReportButton という名前のボタンがあります。このボタンをクリックすると、ajax Web メソッド "Error.aspx/CheckSessionExpiry" を使用して、サーバーからのセッション値を確認する必要があります。これは、checkSession JavaScript 関数で行われます。現在、checkSession は何も返していません。代わりに、結果に基づいて必要な操作を処理しています (エラー ページにリダイレクトしています)。

  1. ajax Web メソッドの結果を Main Caller に返す必要があります。どうすればこの返品を行うことができますか?
  2. 残りのコード (メイン コーラーから) を成功のコールバックに移動する必要がありますか?

主な発信者

searchReportButton.click(function () {

    checkSession();
    //Remainging Code

});

ヘルパー

function checkSession() {

var win = 101;
$.ajax(
        {
            type: "POST",
            url: "Error.aspx/CheckSessionExpiry",
            data: '{"winNumber": "' + win + '"}',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: handleSessionResult

        }
        );
        }

結果ヘルパー

  function handleSessionResult(result) {


    if (result.hasOwnProperty("d")) 
    {
      result = result.d
    }

    if (result == "ACTIVE") 
    {
      window.location.href("Error.aspx");
      return false;
    }

   //alert(result);

}

参照:

  1. jQuery で非同期ではなく同期の Ajax リクエストを実行するにはどうすればよいですか?
  2. $.ajax コンテキスト オプション
  3. jQuery Ajax Callback がコンテキストを取得しない
  4. jQuery は、より多くのパラメーターをコールバックに渡します
4

1 に答える 1

2

それはいけません。または、より具体的には、すべきではありません。Ajax リクエストはasync、処理中に他の JS 操作をブロックしないことを意味します (サーバーの応答が遅い場合に 5 秒間ブラウザーがフリーズすることを想像してみてください)。

代わりにsuccess、すでに行っているコールバックを渡すことができます。次に、そこでやりたいことを何でもしてください。

したがって、代わりに:

checkSession();
//Remainging Code

残りのコードをコールバック内に移動する必要があります。

function handleSessionResult(result) {
    //... current code
    //Remaining code from the above
}
于 2012-12-02T10:43:16.953 に答える