【问题标题】:$.ajaxSetup for Ajax.BeginForm$.ajaxSetup 用于 Ajax.BeginForm
【发布时间】:2012-07-06 22:20:32
【问题描述】:

$.ajaxSetup 用于 jquery 中的 ajax 调用。 如果我们使用 jquery ajax,这将非常有效。

但在 MVC 中,我们使用 Ajax.BeginForm()。回调处理程序是 OnFailure、OnSuccess、OnBegin。

有没有一种方法可以将 $.ajaxSetup 用于 Ajax.BeginForm()。

更新

例如,我在 10 个地方使用了 Ajax.BeginForm(),但我不想为所有的人编写 OnFailure 处理程序,我只想在 jquery $.ajaxSetup 之类的普通地方编写一个常见的 OnFailure。 有办法吗?

【问题讨论】:

  • 问题/答案的标题错误

标签: ajax asp.net-mvc-3 ajax.beginform


【解决方案1】:

引用$.ajaxSetup的文档:

注意:全局回调函数应设置各自的 全局 Ajax 事件处理程序方法 - .ajaxStart()、.ajaxStop()、 .ajaxComplete()、.ajaxError()、.ajaxSuccess()、.ajaxSend() - 而不是在 $.ajaxSetup() 的选项对象中。

因此,如果您想全局处理所有 AJAX 错误,请使用相应的 global AJAX event handlers,例如 .ajaxError()

$(document).ajaxError(function () {
    console.log('oopsy');
});

【讨论】:

  • 我试过 $(document).ajaxSetup() 但它不适用于 Ajax.BeginForm() ??
【解决方案2】:

我正在审查代码和 microsoft 库以与 ajax 进行通信 jquery.unobtusive-ajax.js 并且在该文件中他们重写了发出请求的主要功能,只有一些选项。但是如果他们使用 jquery 为什么他们需要修改呢?当然,有了这段代码,所有的全局 hadlers 都关闭了。

我做了一点修改并不酷但有效,有更多时间我会用更干净的解决方案更新它。

打开文件jquery.unobtusive-ajax.js

转到函数 asyncRequest,在 $.extend 选项中,您将看到 beforeSend、完成、成功和错误四个事件,您可以在那里引发全局触发器。

原码:

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');
        },

【讨论】:

    【解决方案3】:

    您应该考虑使用 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-05-21
      • 1970-01-01
      • 2013-07-24
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 2017-11-13
      • 2015-10-21
      • 2021-11-17
      相关资源
      最近更新 更多