304 ajax,Ajax请求永远是304的解决方案
我之前写了一个NavigationService,用来做页面的Ajax导航,但是今天发现一个问题,在IE下面,发现Ajax的请求不会真正的被发送到服务器端,在IE里面,返回的永远是304。这个应该是IE的设计问题:查了一下,发现这个博文里面提到了问题的本质:http://blog.sina.com.cn/s/blog_4b7809800100y1c3.html。“因为ajax请求的时候如果使用get方式请求,同时路径参数相同的时候,ajax会先从本地缓存中取,如果取到了它是不会去请求后台的”,知道了问题就好办了,照着文章中写的那样,给每个AJAX的请求都加一个请求参数,以保证URL永远不同。这个是修改之后的代码:
# require: jQuery
# Encapsulate the logic to dynamic load content by Url flag segment
class UrlFlagNaviListener
#public:
constructor: (@m_container, @m_uiLoading, @m_uiError)->
this.__addListener();
naviContent: (contentAjaxUrl)->
contentAjaxUrl = (contentAjaxUrl || window.location.hash).slice(1);
this._naviContentImpl(contentAjaxUrl);
#protected:
_naviContentImpl: (contentAjaxUrl) -> # to be overriden
#private:
__addListener: ()->
$(window).on("hashchange", ()=>
this.naviContent();
);
class ContentNaviListener extends UrlFlagNaviListener
#protected:
_naviContentImpl: (contentAjaxUrl) ->
if (contentAjaxUrl isnt '')
# cancel the previous page's deferred
if (@m_prevRequest?.deferred.state() is 'pending')
console.log("Previous request is cancelled.")
@m_prevRequest.deferred.abort();
@m_prevRequest.stopAnimation();
@m_prevRequest = null;
@m_container.hide();
@m_uiError.hide();
request = {};
# Start animation and return the function to stop it
request.stopAnimation = (()=>
animation = ()=>@m_uiLoading.fadeIn(800).fadeOut(1000);
animation();
timer = setInterval(animation, 2000);
stopAnimation = ()=>
clearInterval(timer);
@m_uiLoading.stop().hide();
return stopAnimation
)();
# Force IE9 refresh the ajax page
leadingChar = if (contentAjaxUrl.indexOf("?") is -1) then "?" else "&"
contentAjaxUrl += "#{leadingChar}timeStamp=#{new Date().getTime()}"
request.deferred = $
.get(contentAjaxUrl)
.done( (data, textStatus, jqXHR)=>
request.stopAnimation();
@m_container.show().html(data) )
.fail( ()=>
request.stopAnimation();
@m_uiError.show() )
@m_prevRequest = request;
############
# Exports
############
window.ContentNaviListener = ContentNaviListener;
304 ajax,Ajax请求永远是304的解决方案相关推荐
- ajax发送异步请求四个步骤,深入理解ajax异步请求的五个步骤(详细代码)
在前端工作中,经常会用到ajax,其实很多人只知道ajax是异步请求,不知道应该如何用它,它的基本步骤有哪些,ajax请求过程是怎样的?接下来这篇文章就给大家介绍Ajax的请求步骤,以及ajax请求步 ...
- 原生JS写Ajax的请求函数
本文主要介绍了如何通过原生JavaScript封装ajax请求,文中给出了具体的实现代码和详细的解释,希望对你有所帮助. 一.JS原生Ajax ajax:一种请求数据的方式,不需要刷新整个页面: aj ...
- addeventlistener监听ajax请求_基于h5的history改善ajax列表请求体验
信息比较丰富的网站通常会以分页显示,在点"下一页"时,很多网站都采用了动态请求的方式,避免页面刷新.虽然大家都是ajax,但是从一些小的细节还是 可以区分优劣.一个小的细节是能否支 ...
- 什么是Ajax?Ajax如何发送请求(详)
本篇来讲关于Ajax的内容,当然还有小伙伴可能不知道该怎么读 "Ajax",它读 "阿贾克斯" ,当然了读法可能因人而异,下面来进入正题,先来了解一下什么是Aj ...
- js ajax 递归,javascript ajax循环请求/ 长轮询终极解决办法——递归
ajax循环请求,不能使用for循环,原因如下: 1. 因为ajax是异步执行,在还没有拿到服务器响应内容,就进入下一个for循环中 解决办法:递归currentIndex = 0; function ...
- ajax提交相对路径报错,ajax提交请求为啥url要用这个函数encodeURI
参考如下: 如果你是通过form提交的,那就不需要用这个了.但是如果是你使用url的方式 例如:ajax提交到后台的,就需要对url进行encodeURI编码, 否则,会导致后台出现各种乱码,不加en ...
- php 返回字符串给aja,解决ajax异步请求返回的是字符串问题
1.返回结果差异 js获取后打印res.code无结果.因为返回数据格式不正确. php文件添加header头: header('Content-Type:application/json;'); 或 ...
- html弹窗赋值给查询框,bootstrap模态框动态赋值, ajax异步请求数据后给id为queryInfo的模态框赋值并弹出模态框(JS)...
/查询单个 function query(id) { $.ajax({ url : "/small/productServlet", async : true, type : &q ...
- ajax jsonp请求报错not a function的解决方案
ajax jsonp请求报错not a function的解决方案 参考文章: (1)ajax jsonp请求报错not a function的解决方案 (2)https://www.cnblogs. ...
最新文章
- LeaFlet学习之GridLayer扩展
- 一次绕过360+诺顿的提权过程
- 6.Xilinx RapidIO核仿真与包时序分析
- java代码耗尽内存_有关Java内存溢出及内存消耗的小知识
- android.mk官网介绍,转载:Android.mk语法介绍
- python读取python源代码文件_python 学习源码练习(2)——简单文件读取
- 图像处理——DCT变换的学习笔记
- linux 命令之df持续更新中~
- Atitit.mssql 数据库表记录数and 表体积大小统计
- BZOJ3835 [Poi2014]Supercomputer 【斜率优化】
- 04轨迹规划基础----正逆运动学的C++代码编写
- 《电脑音乐制作实战指南:伴奏、录歌、MTV全攻略》——第1篇 获取伴奏篇 第1章 MIDI音乐伴奏的获取与制作 1.1 电脑MIDI音乐与设备的介绍...
- mb860 刷机教程
- [深度学习工具]·FoolNLTK 中文处理工具包使用教程
- 轻松获得oblog2.52的WebShell
- 怎么删除或者彻底卸载输入法
- 谷歌浏览器崩溃之错误代码:RESULT_CODE_MISSING_DATA
- 2021年高考成绩查询无为二中,2021年无为县高考状元名单资料,今年无为县高考状元多少分...
- java人际对战五子棋_系统框图如下 java实现五子棋程序 可以实现人人对战 人机对战 简单功能 悔棋 认输...
- 关于阿里云服务器ECS与域名的绑定详细过程介绍