之前的系统主要用firefox进行前台测试,偶尔用IE、搜狗,360测试一下,感觉功能一切都正常。
结果这几天给深圳的员工使用时,发现他们都是登录不上,登录时用的是easyui
的form
控件,结果一直显示登录中。我这边用ff测试过一直都没问题,发现对方用的是360浏览器,结果我也用了一个360,果然单击登录后,一直显示登录中,然后我又刷新一下,结果又登录上了。让我非常不解,重点是这个现象有时出现有时又不出现,一般是我把网页关掉后,再打开网页就会出现,刷新一下就好了。其它的浏览器均无此现象出现。
后来经过研究调试,应该是easyui
的form
控件有问题,因为我用jquery
的$.post()
的话,完全没有这个问题。
我发现easyui
这个form
它提交时,不是用的ajax
,应该是用动态创建一个iframe
来提交的。难怪我之前用tp的IS_AJAX
常量总是false
。
当这个form
出现这个现象时,其实我后台是有接收到form
发来的值的,就是这个form
它不接收我后台返回的json
数据,很奇怪。
哎,不喜欢它这个form
的提交方式,我干脆把它的submit
方式修改了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
if($.fn.form){ $.extend($.fn.form.methods, { //这个方法是获取form的值转换成json对象 object: function(jq){ var o = {}; var a = jq.serializeArray(); $.each(a, function () { if (o[this.name]) { if (!o[this.name].push) { o[this.name] = [o[this.name]]; } o[this.name].push(this.value || ''); } else { o[this.name] = this.value || ''; } }); return o; }, //新的submit方法 submit:function(jq,options){ if(false==options.onSubmit()) return; var form_data=jq.form("object"); $.post(options.url,form_data,options.success,"text"); } }); } |