问题描述:把$.messager.progress('close')放在全局ajax函数的complete方法里就可以免去每次调用$.messager.progress(options)后都需要调用一次$.messager.progress('close')。
比如 一般我们都是这样的:
$.messager.progress(progressMsg); //遮罩并提升信息
$.ajax( {
type : "POST",
url : "/**/*.html",
data : {"params":JSON.stringify(params)},
dataType : 'json',
success : function(data) {
$.messager.progress('close');//这里
if (data.success) {
} else {
}
},
error:function(){
$.messager.progress('close');//这里
}
});
这只是一个ajax,如果同一个页面有多个ajax就要写很多重复的$.messager.progress('close'),因此想到把close放到全局函数里:
$.ajaxSetup({
complete:function(XMLHttpRequest,textStatus){
$.messager.progress('close');
}
})
但问题来了,如果某个ajax并没有调用$.messager.progress()或者他自己已经调用过$.messager.progress('close')进行关闭了,此时complete方法里的
$.messager.progress('close')就会报错。
之前的想法是 在complete方法里先判断$.messager.progress是否是'open'状态,如果是 再调用$.messager.progress('close')
进行关闭,但我在文档中没找到这么判断$.messager.progress是open还是close状态,于是想着在源码中修改,
3129行(由于我已经修过了,源码是3128行)点进去,调用options前先判断对象是否已存在,如下:
上面注释的是我添加上去的,将其打开就可以解决问题了。
现在不管$.messager.progress有没有调用过、$.messager.progress是否是打开的,调用$.messager.progress('close')都不会报错了