解决easyui中重复调用$.messager.progress('close')报错问题

来源:互联网 发布:django 遍历数组前五个 编辑:程序博客网 时间:2024/06/06 07:50

问题描述:把$.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')都不会报错了





0 0
原创粉丝点击