TP5用ajax请求遇到数据库查询就会(canceled)

浏览:1067 发布日期:2018/11/01 分类:求助交流
我用的TP5,请求方式是jquery的$.ajax方法。

我描述下我遇到的现象,现象非常的神奇!至少我是这么认为的!

问题描述:

  点击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动态图,包括加载中的图片都会变成静止状态,这个是我做项目时禁用异步的时候遇到过的情况。所以我是不希望用这个方法解决的,会影响用户体验。

  那么,还是需要找到问题的根本原因进行解决,真的真的觉得这个问题特别神奇!!!!

  请教大神这个问题该怎么破呀?
最佳答案
评论( 相关
后面还有条评论,点击查看>>