$.ajaxSetup用于jquery中的ajax调用。如果我们使用jquery,这是非常好的。
但是在MVC中,我们使用Ajax.BeginForm() .the回调处理程序OnFailure、OnSuccess、OnBegin。
我们是否可以将$.ajaxSetup用于Ajax.BeginForm()。
更新
例如,我已经在10个地方使用了Ajax.BeginForm(),但是我不想编写所有的OnFailure处理程序,我只想在公共的地方编写一个通用的OnFailure,比如jQuery$.ajaxSetup。有办法吗?
发布于 2012-07-07 07:48:12
引用$.ajaxSetup的文档
注意:全局回调函数应该使用它们各自的全局Ajax事件处理程序方法-- .ajaxStart()、.ajaxStop()、.ajaxComplete()、.ajaxError()、.ajaxSuccess()、.ajaxSend() --而不是在$.ajaxSetup()的options对象中设置。
因此,按照建议,如果要全局处理所有AJAX错误,请使用相应的全局AJAX事件处理程序 (例如.ajaxError() ):
$(document).ajaxError(function () {
console.log('oopsy');
});发布于 2014-04-22 04:46:28
我正在回顾微软的代码和库,以使与ajax进行通信的是jquery.unobtusive-ajax.js,在该文件中,他们重新编写了发出请求的主要功能,但是只有一些选项。但是,如果他们使用jquery,为什么需要修改jquery呢?当然,有了这个密码,所有的全球强子都关闭了。
我做了一点小小的修改并不酷,但是很有效,用更多的时间我会用一个更干净的解决方案来更新这个。
打开文件jquery.unobtusive-ajax.js.
转到function 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');
},发布于 2012-07-06 22:30:49
您应该考虑使用ajax选项:
定义:
@{
AjaxOptions ajaxOpts = new AjaxOptions
{
LoadingElementDuration = 2,
LoadingElementId = "someElementIdToShowLoading",
UpdateTargetId = "ElementIdToLoadTo"
};
}所用:
@using (Ajax.BeginForm("ActionName", ajaxOpts)){}有关完整列表,请参见此处:properties.aspx
https://stackoverflow.com/questions/11370394
复制相似问题