5

$ .ajaxSetupは、jqueryのajax呼び出しに使用されます。jquery ajaxを使用する場合、これは完全に正常に機能します。

ただし、MVCではAjax.BeginForm()を使用します。コールバックハンドラーはOnFailure、OnSuccess、OnBeginです。

Ajax.BeginForm()に$.ajaxSetupを使用する方法はありますか?

アップデート

たとえば、10か所でAjax.BeginForm()を使用しましたが、すべてにOnFailureハンドラーを記述する代わりに、jquery$.ajaxSetupのような共通の場所に単一の共通のOnFailureを記述したいと思います。それを行う方法はありますか?

4

3 に答える 3

2

のドキュメントからの引用$.ajaxSetup

注:グローバルコールバック関数は、それぞれのグローバルAjaxイベントハンドラーメソッド(.ajaxStart()、. ajaxStop()、. ajaxComplete()、. ajaxError()、. ajaxSuccess()、. ajaxSend())で設定する必要があります。 $ .ajaxSetup()のオプションオブジェクト。

したがって、提案されているように、たとえば、すべてのAJAXエラーをグローバルに処理する場合など、対応するグローバルAJAXイベントハンドラーを使用します。.ajaxError()

$(document).ajaxError(function () {
    console.log('oopsy');
});
于 2012-07-07T07:48:12.273 に答える
1

ajaxとの通信を行うためのMicrosoftのコードとライブラリを確認しているのはjquery.unobtusive-ajax.jsであり、そのファイルでは、リクエストを行うための主な機能を書き直しましたが、一部のオプションのみです。しかし、jqueryを使用している場合、なぜそれを変更する必要があるのでしょうか?そしてもちろん、そのコードでは、すべてのグローバルハドラーがオフになっています。

私は少し変更を加えましたが、クールではありませんが機能します。もっと時間が経つにつれて、よりクリーンなソリューションでこれを更新します。

ファイルjquery.unobtusive-ajax.jsを開きます。

関数asyncRequestに移動すると、$。extendオプションで、4つのイベントbeforeSend、complete、success、およびerrorが表示され、そこでグローバルトリガーを発生させることができます。

元のコード:

complete: function () {
            loading.hide(duration);
            getFunction(element.getAttribute("data-ajax-complete"), ["xhr", "status"]).apply(this, arguments);
        },

変更されたコード:

complete: function () {
            loading.hide(duration);
            getFunction(element.getAttribute("data-ajax-complete"), ["xhr", "status"]).apply(this, arguments);
            $(document).trigger('ajaxComplete');
        },
于 2014-04-22T04:46:28.030 に答える
0

ajaxオプションの使用を検討する必要があります。

定義:

@{
 AjaxOptions ajaxOpts = new AjaxOptions
 {
    LoadingElementDuration = 2,
    LoadingElementId = "someElementIdToShowLoading",
    UpdateTargetId = "ElementIdToLoadTo"
 };
}

使用済み:

@using (Ajax.BeginForm("ActionName", ajaxOpts)){}

完全なリストについては、こちらを参照してください:http: //msdn.microsoft.com/en-us/library/system.web.mvc.ajax.ajaxoptions_properties.aspx

于 2012-07-06T22:30:49.757 に答える