$ .ajaxSetup用于jquery中的ajax调用。 如果我们使用jquery ajax,这非常好用。
但是在MVC中我们使用Ajax.BeginForm()。回调处理程序是OnFailure,OnSuccess,OnBegin。
有没有办法可以将$ .ajaxSetup用于Ajax.BeginForm()。
更新
例如,我在10个地方使用过Ajax.BeginForm(),但不是为所有人编写OnFailure处理程序,我只想在jquery $ .ajaxSetup中编写一个常见的OnFailure。 有办法吗?
答案 0 :(得分:2)
引用$.ajaxSetup
的文档:
注意:全局回调函数应设置为各自的 全局Ajax事件处理程序方法 - .ajaxStart(),. ajaxStop(), .ajaxComplete(),. ajaxError(),. ajaxSuccess(),. ajaxSend() - 而不是$ .ajaxSetup()的选项对象。
正如建议的那样,如果要全局处理所有AJAX错误,请使用相应的global AJAX event handlers,例如.ajaxError()
:
$(document).ajaxError(function () {
console.log('oopsy');
});
答案 1 :(得分:1)
我正在审查微软的代码和库,以便与ajax通信是 jquery.unobtusive-ajax.js ,并且在该文件中他们重写了主要功能以提出请求,只有一些选项。但如果他们使用jquery为什么需要修改它?当然,有了这个代码,所有的全球征兵都不在了。
我做了一点修改并不酷但是有效,有更多时间我会用更清洁的解决方案来更新它。
打开文件 jquery.unobtusive-ajax.js 。
转到函数asyncRequest,在$ .extend选项中,您将看到四个事件 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');
},
答案 2 :(得分: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