AJAX 缓存问题的两种办理要领(IE)

做一个项目用到Ajax,开始以为挺好,厥后发明一个问题,譬喻删除一项,规复之后就不能再接着删除,
必需要等一段时间,厥后知道是IE缓存的问题
AJAX缓存页面是一个刚打仗AJAX的人必然会碰着的问题,造成这个问题的要害性人物又是Ie...
在网上找了许多几何资料后,总结一下
1:在AJAX请求的页面后加个随机函数,我们可以利用随机时间函数
在javascript发送的URL后加上t=Math.random()
虽然,不是直接把t=Math.random()拷贝到URL后头,应该像这样:URL+"&"+"t="+Math.random();
2:在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0")
一般环境下,这里的XMLHttpRequest不会直接利用
你应该可以找到这样的代码
XXXXX.send(YYYYYY);
那么,就把它酿成
XXXXX.setRequestHeader("If-Modified-Since","0");
XXXXX.send(YYYYYY);
第二种要领感受挺好
ajax 排除缓存的两种要领
第一种:
模板上加上
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
第二种:
url加上随机数变量
[AJAX先容]
  Ajax是利用客户端剧本与Web处事器互换数据的Web应用开拓要领。Web页面不消打决绝互流程举办从头加裁,就可以动态地更新。利用Ajax,用户可以建设靠近当地桌面应用的直接、高可用、更富厚、更动态的Web用户界面。
  异步JavaScript和XML(AJAX)不是什么新技能,而是利用几种现有技能——包罗级联样式表(CSS)、JavaScript、XHTML、XML和可扩展样式语言转换(XSLT),开拓外观及操纵雷同桌面软件的Web应用软件。
  [AJAX执行道理]
  一个Ajax交互从一个称为XMLHttpRequest的JavaScript工具开始。如同名字所体现的,它答允一个客户端脚原来执行HTTP请求,而且将会理会一个XML名目标处事器响应。Ajax处理惩罚进程中的第一步是建设一个XMLHttpRequest实例。利用HTTP要领(GET或POST)来处理惩罚请求,并将方针URL配置到XMLHttpRequest工具上。
  当你发送HTTP请求,你不但愿欣赏器挂起并期待处事器的响应,取而代之的是,你但愿通过页面继承响应用户的界面交互,并在处事器响应真正达到后处理惩罚它们。要完成它,你可以向XMLHttpRequest注册一个回调函数,并异步地派发XMLHttpRequest请求。节制权顿时就被返回到欣赏器,当处事器响应达到时,回调函数将会被挪用。
  [AJAX实际应用]
  1. 初始化Ajax
  Ajax实际上就是挪用了XMLHttpRequest工具,那么首先我们的就必需挪用这个工具,我们构建一个初始化Ajax的函数:

复制代码 代码如下:


/**
* 初始化一个xmlhttp工具
*/
function InitAjax()
{
 var ajax=false;
 try {
  ajax = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
  try {
   ajax = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
   ajax = false;
  }
 }
 if (!ajax && typeof XMLHttpRequest!='undefined') {
  ajax = new XMLHttpRequest();
 }
 return ajax;
}


  2. Ajax利用Get方法
  此刻我们第一步来执行一个Get请求,插手我们需要获取 /show.php?id=1的数据,那么我们应该怎么做呢?
  假设有一个链接:<a href="https://www.jb51.net/show.php?id=1">新闻1</a>,我点该链接的时候,不想任何刷新就可以或许看到链接的内容,那么我们该怎么做呢?
//将链接改为:
//而且配置一个吸收新闻的层,而且配置为不显示:
  同时结构相应的JavaScript函数:

复制代码 代码如下:


function getNews(newsID)
{
 //假如没有把参数newsID传进来
 if (typeof(newsID) == 'undefined')
 {
  return false;
 }
 //需要举办Ajax的URL地点
 var url = "/show.php?id="+ newsID;
 //获取新闻显示层的位置
 var show = document.getElementById("show_news");
 //实例化Ajax工具
 var ajax = InitAjax();
 //利用Get方法举办请求
 ajax.open("GET", url, true);
 //获取执行状态
 ajax.onreadystatechange = function() {
  //假如执行是状态正常,那么就把返回的内容赋值给上面指定的层
  if (ajax.readyState == 4 && ajax.status == 200) {
   show.innerHTML = ajax.responseText;
  }
 }
 //发送空
 ajax.send(null);
}


  这种方法适应于页面中任何元素,包罗表单等等,其实在应用中,对表单的操纵是较量多的,针对表单,更多利用的是POST方法,这个下面将报告。
3. Ajax利用POST方法
  其实POST方法跟Get方法是较量雷同的,只是在执行Ajax的时候稍有差异,我们简朴报告一下。
  假设有一个用户输入资料的表单,我们在无刷新的环境下把用户资料生存到数据库中,同时给用户一个乐成的提示。

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdjpz.html