firefox快速刷新error及解决办法

问题:

    测试发过来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");

  }

}