1

我想开发一个 ajax 管道,这样每当通过 ajax.beginform 或 ajax.actionLink 发出任何 ajax 请求时,它都应该从我的 ajax.start 函数开始,在该函数中我可以读取 targetupdateid 以便我可以屏蔽 blockui 和任何开发人员都不应该为这个 ajax.start 烦恼。我试图使用这段代码但它不起作用

$(document).ajaxStart(function (xhr, setting) {
    console.log(this.activeElement);
    if (this.activeElement.type == 'submit') {
        activeElement = this.activeElement.form.attributes["data-ajax-update"].value;

    } else {
       / activeElement = this.activeElement.attributes["data-ajax-update"].value;
    }
    if (activeElement != null) {
        $(activeElement).blockUI();
    }

});

任何帮助将不胜感激。

4

2 回答 2

1

试试这个

   <div id="mainbody">
   </div>  

    <div id="SomeId" style="display:none">

        // put you style to block the UI here 
        // or put loader image
        <img src="@Url.Content("~/Content/themes/base/images/ajax_loader_big.gif")" alt="" />
    </div>


    @Ajax.BeginForm("Index", "Search", new AjaxOptions { UpdateTargetId = "mainbody", HttpMethod = "Post", LoadingElementId = "SomeId" })

您可以使用 Ajax-Loader 或一些带有加载器图像的 css 样式,这会阻塞 UI。您需要在 LoadingElementId中为该 div Id 设置该 ID,这会阻塞 UI,直到 ajax 功能未完成。

于 2012-11-01T13:49:28.487 回答
0

感谢您的解决方案,但我想阻止 UpdateTargetId 通过向 click 添加侦听器来解决该问题。

  var activeElement,
    targetElement,
    callbackfunc = function (event) {
        activeElement = event.target || event.srcElement;
    };
window.addEventListener('click', callbackfunc, true);
$(document).ajaxStart(function () {if (activeElement !== null && activeElement !== undefined) {
        if (activeElement.type == 'submit') {
            targetElement = activeElement.form.attributes["data-ajax-update"].value;
        }
        if (activeElement.tagName == 'A') {
            targetElement = activeElement.attributes["data-ajax-update"].value;
        }
    }

    if (targetElement !== undefined || targetElement !== null) {
        $(targetElement).block({
            showOverlay: false,
            css: { border: '0px', width: '40px', height: '40px' },
            message: '<div class="progress"><div>'
        });
    }

});
于 2012-11-02T09:13:02.093 回答