问题:
测试发过来bug,说——频繁F5刷新页面,会闪现未加载完样式的页面;
开发用的Chrome,没发现这个问题,测试用的firefox,于是从浏览器的刷新加载机制方面搜索解决办法,没搜到,运气好,最后找到了解决办法
firefox下频繁F5刷新还有个问题——可能ajax未请求完成就刷新了,Chrome下是刷新就自动canceld,但是firefox好像不是,上一次请求的结果因为刷新页面所以执行了error方法,页面闪现一下error方法的结果知道新的页面请求完成。
请求根本没有发送到后台,状态码是0表示没有发出ajax请求。各个状态含义:
- 0 - (未初始化)还没有调用send()方法
- 1 - (载入)已调用send()方法,正在发送请求
- 2 - (载入完成)send()方法执行完成,
- 3 - (交互)正在解析响应内容
- 4 - (完成)响应内容解析完成,可以在客户端调用了
jQuery ajax请求错误返回status 0和错误error的问题,分析可能的原因:
- url不存在(排除)
- url不可达(排除)
- 发送了跨域请求(排除)
- 数据格式错(排除)
- ajax在完成之前请求已经被取消(ajax请求没有发出),由于,例如:页面已经跳转或跳转太快、浏览器输入新的url、按钮立即新的点击等(确定)
用status做判断条件,status为0,说明当前是中断,或者unsent,opened,则不执行error
但是!通过Chrome的调试可以看出,同样是status为0,有canceled和failed两种状态,这个还找不到办法判断。
解决办法:
error: function (jqXHR,textStatus,errorthrown) {
//当前请求容器为空或错误原因为超时时才执行err
if(jqXHR.status!==0 || textStatus=="timeout"){
err ? err(jqXHR) : alert("原函数error");
}
}