一、出现fail to load reponse data的原因
- 服务器返回的数据格式不对,限定返回指定的数据格式(或默认的数据格式),但是服务端返回来的数据格式不正确且无法转换成对应的格式。
- 请求超时,超时后会强制刷新页面(加载数据),而此时数据还没有返回,就会出现当异步请求正确返回数据而页面无法加载数据。
二、项目中出现该问题的原因分析与解决
- 判断是否是返回的数据格式问题,查看日志,发现数据格式为json,格式正常,排除数据格式问题。
- 判断是否为请求超时的问题,修改后端代码,取消掉查询数据库操作,直接手动添加返回的数据,结果页面成功加载。
- 修改请求的超时时间,查看官方文档发现pjax请求的默认超时时间为650毫秒,于是修改pjax的超时时间为12000毫秒,此时页面能成功加载。
三、总结
在使用pjax(或ajax)做异步请求时应该考虑服务器处理请求的时间,设置足够的超时时间,同时也要预防因为网络原因导致的意外超时问题,进行相应的超时处理。