我描述下我遇到的现象,现象非常的神奇!至少我是这么认为的!
问题描述:
点击ajax请求按钮时,有很高的概率会进入error回调函数,表示请求失败了。
谷歌浏览器Network监测到,失败的请求Status为(canceled)。
请求页的代码:
Db::name('user')->where("username='a'")->find();
return jsondata(1,'测试!');//这一句是我自己封装的输出特定结构json串的函数
没错,就这2行,因为这是我反复测试后,将其他代码都删了,只保留了这2行来做测试。
然后我研究了好久,最终把代码缩减到只有2行,当我删除Db数据查询的那一行的时候,100%不会出问题,json串正常获取到,当我恢复Db这一行之后,就会随机性出这个问题。
然后我又尝试了不用ajax请求,直接通过链接访问请求页,非常快速的按F5刷新,100%不出问题,json串正常输出!
这就是一件非常神奇的现象了有木有?
接下来,我找到了一个解决方法,就是给$.ajax里面配上async:false的属性,这个表示关闭异步提交,用这个方法也不会报错,我了个擦,这就奇了个怪了!为什么会这样?
虽然这个async可以解决问题,但是async:false会有问题,就是在提交处理缓慢的时候,浏览器页面会被锁死,里面的gif动态图,包括加载中的图片都会变成静止状态,这个是我做项目时禁用异步的时候遇到过的情况。所以我是不希望用这个方法解决的,会影响用户体验。
那么,还是需要找到问题的根本原因进行解决,真的真的觉得这个问题特别神奇!!!!
请教大神这个问题该怎么破呀?
最佳答案