1

私はasp.net mvc3アプリケーションに取り組んでいます。

私はこのJquery関数を持っています

    function CheckSession() {
        $.ajax({
            type: 'POST',
            url: '@Url.Action("CheckSession", "Home")',
            success: function (isAvailable) {
                return isAvailable;
            },
            complete: function (owner) {

            },
            error: function (owner) {
                alert('Error Getting session');
                return false;
            }

        });
    }

基本的に、このセッションが行うことは、そのアクションからアクションを呼び出すことであり、HomeControllerそのアクションは true または false を返します。

私がやりたいことはこれです。アプリケーションで ajax を呼び出す前に、最初にこの関数を使用したいと思います。返された場合trueは呼び出しを続行し、そうでない場合は何もしません。

すべてのコードを調べて、すべての ajax 呼び出しの前に呼び出す必要なく、これを行う方法はありますか

これは、すべての ajax の前に呼び出して戻り値をテストすることで実行できることはわかっていますが、大量の ajax 呼び出しがあります。

私が探しているのは、ajax 呼び出しが行われる前に起動するイベント ハンドラーです。

このようなもの:

$(ajax).beforeCall(function (event) {
    if (CheckSession()){
        event.ProceedWithCall;
    }
    else {
         //Stop the call;
         return false;
    }
});
4

3 に答える 3

3

次のように関数を使用ajaxSetupおよび設定できます。beforeSend

$.ajaxSetup({
  beforeSend: function(){
            return !CheckSession();
      }
});

beforeSend ドキュメント:

送信前に jqXHR (jQuery 1.4.x では XMLHTTPRequest) オブジェクトを変更するために使用できるプレリクエスト コールバック関数。これを使用して、カスタム ヘッダーなどを設定します。jqXHR および設定マップは引数として渡されます。これは Ajax イベントです。※beforeSend関数でfalseを返すとリクエストがキャンセルされます。

ajaxSetup ドキュメント:

説明: 今後の Ajax リクエストのデフォルト値を設定します。

于 2012-04-26T11:09:26.737 に答える
1

beforeSend(jqXHR, settings) コールバックを使用します。

送信前に jqXHR (jQuery 1.4.x では XMLHTTPRequest) オブジェクトを変更するために使用できるプレリクエスト コールバック関数。これを使用して、カスタム ヘッダーなどを設定します。jqXHR および設定マップは引数として渡されます。これは Ajax イベントです。beforeSend 関数で false を返すと、リクエストがキャンセルされます。

詳細については、 http://api.jquery.com/jQuery.ajax/を参照してください。

于 2012-04-26T11:03:14.357 に答える
0

個人的には、クライアント側のJavascriptではなく、セッションチェックロジックを呼び出すのはASP.NETエンドポイントになるようにするでしょう。

考えてみてください。セッションをチェックするために.NETコードをキックするAJAX呼び出しを起動し、ブール値を返し、場合は別のAJAX呼び出しを起動しますtrue実際のAJAX呼び出し(つまり、AJAX呼び出し2)を起動し、ASP.NETエンドポイントでAJAX呼び出し1で呼び出しているものをすべて処理してみませんか?

この方法でHTTPリクエストのラウンドトリップを節約できます。これにより、を持っていることを考えると大幅に向上する可能性がありますtons of AJAX calls

ちょうど私の2セント。それを除けば、私は上記の@gdoronの答えに行きます。

于 2012-04-26T11:17:05.247 に答える