2

ajaxリクエストが行われたときにボディに「読み込み中」クラスを追加して、進行状況のアニメーションを表示できるようにしました...何らかの理由で関数が呼び出されず、アラートが表示されません...

function setLoadingPanel()
{
    var timer;
    var body = $("body");

    alert("Set AJAX HOOKS...");
    $("body").on({
        ajaxStart: function ()
        {
            alert("AJAX START");
            //timer = setTimeout(function () { body.addClass("loading"); }, 50)
        },
        ajaxStop: function ()
        {
            alert("AJAX STOP!!!");
            //$(this).removeClass("loading");
            //clearTimeout(timer);
        }
    });
}

フックが呼び出されたかどうかを確認するためにアラートを配置しましたが、何らかの理由でアラートが表示されません。

これは、単純な AJAX.ActionLink ヘルパーを使用した私の ajax リクエストです。

@{
    var ajaxDialogoptions = new AjaxOptions()
    {
        HttpMethod = "GET",
        InsertionMode = InsertionMode.Replace,
        UpdateTargetId = "DialogContainer",
        OnComplete = "OpenDialog('DialogContainer');"
    };
}
@Ajax.ActionLink(Model.AddNewItemButtonTitle, Model.AddActionName, Model.AddActionController, Model.AddActionRoutValues, ajaxDialogoptions, new { Class = "btn btn-primary anti-align-rtl" })

スクリプトのバンドルは次のとおりです。

            Bundle bundle = new Bundle("~/Scripts/jsRTL");

            bundle.AddFile("~/Scripts/Common/jquery-1.9.1.min.js");
            bundle.AddFile("~/Scripts/Common/jquery-ui-1.10.1.custom.min.js");
            bundle.AddFile("~/Scripts/Common/jquery.unobtrusive-ajax.min.js");
            bundle.AddFile("~/Scripts/Validator/jquery.validate.min.js");
            bundle.AddFile("~/Scripts/Validator/jquery.validate.unobtrusive.min.js");
            bundle.AddFile("~/Scripts/Globalize/globalize.js");
            bundle.AddFile("~/Scripts/Globalize/globalize.culture.en-US.js");
            bundle.AddFile("~/Scripts/Globalize/globalize.culture.he.js");
            bundle.AddFile("~/Scripts/Globalize/globalize.culture.he-IL.js");
            bundle.AddFile("~/Scripts/Bootstrap/bootstrap-rtl.js");
            bundle.AddFile("~/Scripts/Common/Common.js");
4

2 に答える 2

8

次のように ajaxStart- および ajaxStop-Handler をドキュメントに追加してみてください。

$(document).ajaxStart(function () {
    alert("AJAX START");
    //timer = setTimeout(function () { body.addClass("loading"); }, 50)
});
$(document).ajaxStop(function () {
    alert("AJAX STOP!!!");
    //$(this).removeClass("loading");
    //clearTimeout(timer);
});

ここを参照してください:

ただし、jQuery 1.8 の時点では、.ajaxStart() メソッドはドキュメントにのみ添付する必要があります。

于 2013-03-15T07:20:39.997 に答える
4

jQuery1.9を使用していることに気付きました。jquery.unobtrusive-ajax.min.jsASP.NET MVC 4に付属していた初期バージョンは、依存していなかったため、互換性があるようにアップグレードしたことを確認してください.live()

于 2013-03-15T07:19:49.527 に答える