菜单

AJAX 缓存问题的星星栽缓解措施(IE)

2018年11月15日 - Ajax

举行一个项目利用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的函数:

举行一个档次以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;
}

/**
* 初始化一个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=”/show.php?id=1″>新闻1</a>,我点该链接的时刻,不思任何刷新就可知看出链接的内容,那么我们欠怎么开啊?
//将链接改吧:
//并且安装一个收到资讯之重合,并且安装为未显:
  同时组织相应的JavaScript函数:

  2. Ajax使用Get方式
  现在咱们先是步来执行一个Get请求,加入我们要得到
/show.php?id=1的多少,那么我们相应怎么开吗?
  假设有一个链接:<a
href=”/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);
}

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方式,这个下面将叙。

  这种方法适应被页面被其他因素,包括表单等等,其实当使中,对表单的操作是较多的,针对表单,更多采用的凡POST方式,这个下面用讲述。

  1. Ajax使用POST方式
      其实POST方式跟Get方式是较接近之,只是以尽Ajax的当儿有点有例外,我们简要描述一下。
      假设有一个用户输入资料之表单,我们以无刷新的图景下把用户资料保存至数据库中,同时叫用户一个成的唤醒。
  1. Ajax使用POST方式
      其实POST方式跟Get方式是比像样之,只是于推行Ajax的早晚有点有例外,我们简要描述一下。
      假设有一个用户输入资料之表单,我们于无刷新的状态下把用户资料保存及数据库中,同时让用户一个成功的唤醒。

复制代码 代码如下:

复制代码 代码如下:

//构建一个表单,表单中不需要action、method之类的性能,全部由ajax来搞定了。
<form name=”user_info”>
姓名:<input type=”text” name=”user_name” /><br />
年龄:<input type=”text” name=”user_age” /><br />
性别:<input type=”text” name=”user_sex” /><br />
<input type=”button” value=”提交表单” onClick=”saveUserInfo()”>
</form>
//构建一个奉返回信息之交汇:
<div id=”msg”></div>

//构建一个表单,表单中莫待action、method之类的性,全部由于ajax来搞定了。
<form name=”user_info”>
姓名:<input type=”text” name=”user_name” /><br />
年龄:<input type=”text” name=”user_age” /><br />
性别:<input type=”text” name=”user_sex” /><br />
<input type=”button” value=”提交表单” onClick=”saveUserInfo()”>
</form>
//构建一个奉返回信息的叠:
<div id=”msg”></div>

  我们见到上面的form表单里从未索要付目标等消息,并且付诸按钮的项目也特是button,那么具有操作都是靠onClick事件中之saveUserInfo()函数来施行了。我们讲述一下这个函数:

  我们来看地方的form表单里无索要付出目标等消息,并且付诸按钮的档次也惟有是button,那么具有操作都是靠onClick事件备受之saveUserInfo()函数来推行了。我们描述一下以此函数:

复制代码 代码如下:

复制代码 代码如下:

function saveUserInfo()
{
 //获取接受返回信息层
 var msg = document.getElementById(“msg”);
 //获取表单对象同用户信息值
 var f = document.user_info;
 var userName = f.user_name.value;
 var userAge = f.user_age.value;
 var userSex = f.user_sex.value;
 //接收表单的URL地址
 var url = “/save_info.php”;
 //需要POST的值,把每个变量都由此&来连接
 var postStr = “user_name=”+ userName +”&user_age=”+ userAge
+”&user_sex=”+ userSex;
 //实例化Ajax
 var ajax = InitAjax();
 
 //通过Post方式打开连接
 ajax.open(“POST”, url, true);
 //定义传输的文书HTTP头信息
 ajax.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);
 //发送POST数据
 ajax.send(postStr);
 //获取执行状态
 ajax.onreadystatechange = function() {
  //如果执行状态成功,那么即便拿返回信息写到指定的层里
  if (ajax.readyState == 4 && ajax.status == 200) {
   msg.innerHTML = ajax.responseText;
  }
 }
}

function saveUserInfo()
{
 //获取接受返回信息层
 var msg = document.getElementById(“msg”);
 //获取表单对象同用户信息值
 var f = document.user_info;
 var userName = f.user_name.value;
 var userAge = f.user_age.value;
 var userSex = f.user_sex.value;
 //接收表单的URL地址
 var url = “/save_info.php”;
 //需要POST的价值,把每个变量都经过&来衔接
 var postStr = “user_name=”+ userName +”&user_age=”+ userAge
+”&user_sex=”+ userSex;
 //实例化Ajax
 var ajax = InitAjax();
 
 //通过Post方式打开连接
 ajax.open(“POST”, url, true);
 //定义传输的公文HTTP头信息
 ajax.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);
 //发送POST数据
 ajax.send(postStr);
 //获取执行状态
 ajax.onreadystatechange = function() {
  //如果执行状态成功,那么即使管返回信息写到指定的层里
  if (ajax.readyState == 4 && ajax.status == 200) {
   msg.innerHTML = ajax.responseText;
  }
 }
}

  4. 异步回调(伪Ajax方式)
  一般景象下,使用Get、Post方式的Ajax我们且能够解决目前问题,只是使用复杂程度,当然,在付出中我们或许会碰到无法以Ajax的时刻,但是咱以用效法Ajax的功效,那么尽管可运用伪Ajax的主意来实现我们的急需。
  伪Ajax大致原理就是我们还是寻常的表单提交,或者别的啊的,但是咱可是把提交的价值目标是一个生成框架,这样页面就无刷新了,但是呢,我们同时用看咱们的实施结果,当然可以运用JavaScript来套提示信息,但是,这不是实在的,所以我们便得我们的行结果来异步回调,告诉我们执行结果是哪的。
  假设我们的需要是亟需达成污染一模一样布置图片,并且,需要懂得图片上传后的状态,比如,是否达到污染成、文件格式是否正确、文件大小是否正确等等。那么我们就算待我们的靶子窗口把实行结果返回来为咱的窗口,这样就是能够胜利的学一潮Ajax调用的历程。
  以下代码稍微多一些,
并且涉及Smarty模板技术,如果不顶了解,请阅读有关技能资料。
  上传文书:upload.html

  4. 异步回调(伪Ajax方式)
  一般情况下,使用Get、Post方式的Ajax我们都能解决目前问题,只是采用复杂程度,当然,在开被我们可能会遇见无法使Ajax的时,但是我们而得效法Ajax的机能,那么就得采取伪Ajax的点子来落实我们的需求。
  伪Ajax大致原理就是我们要一般的表单提交,或者别的什么的,但是咱却是拿提交的值目标是一个弯框架,这样页面就非刷新了,但是呢,我们以得张咱们的行结果,当然好使用JavaScript来效仿提示信息,但是,这不是实的,所以我们就是用我们的履行结果来异步回调,告诉我们实施结果是何等的。
  假设我们的要求是索要达到传一模一样摆放图,并且,需要知道图片上传后的状态,比如,是否达标污染成、文件格式是否科学、文件大小是否正确等等。那么我们不怕用我们的目标窗口将推行结果返回来受咱们的窗口,这样虽可知顺利的法一蹩脚Ajax调用的进程。
  以下代码稍微多一点,
并且涉及Smarty模板技术,如果未极端了解,请阅读有关技术资料。
  上污染文书:upload.html

复制代码 代码如下:

复制代码 代码如下:

//上传表单,指定target属性为转变框架iframe1
<form action=”/upload.php” method=”post”
enctype=”multipart/form-data” name=”upload_img” target=”iframe1″>
摘要达传之图样:<input type=”file” name=”image”><br />
<input type=”submit” value=”上污染图片”>
</form>
//显示提示信息的重叠
<div id=”message” style=”display:none”></div>
//用来开靶子窗口的变迁框架
<iframe name=”iframe1″ width=”0″ height=”0″
scrolling=”no”></iframe>
<?php
/* 定义常量 */
//定义允许上传的MIME格式
define(“UPLOAD_IMAGE_MIME”,
“image/pjpeg,image/jpg,image/jpeg,image/gif,image/x-png,image/png”);
//图片允许大小,字节
define(“UPLOAD_IMAGE_SIZE”, 102400);
//图片大小用KB为单位来表示
define(“UPLOAD_IMAGE_SIZE_KB”, 100);
//图片上传的路子
define(“UPLOAD_IMAGE_PATH”, “./upload/”);
//获取允许的图像格式
$mime = explode(“,”, USER_FACE_MIME);
$is_vaild = 0;
//遍历所有允许格式
foreach ($mime as $type)
{
 if ($_FILES[‘image’][‘type’] == $type)
 {
  $is_vaild = 1;
 }
}
//如果格式正确,并且没有超越大小就直达传上去
if ($is_vaild && $_FILES[‘image’][‘size’]<=USER_FACE_SIZE &&
$_FILES[‘image’][‘size’]>0)
{
 if (move_uploaded_file($_FILES[‘image’][‘tmp_name’],
USER_IMAGE_PATH . $_FILES[‘image’][‘name’]))
 {
  $upload_msg =”上传图片成功!”;
 }
 else
 {
  $upload_msg = “上污染图片文件失败”;
 }
}
else
{
 $upload_msg = “上污染图片失败,可能是文本超过”. USER_FACE_SIZE_KB
.”KB、或者图片文件也空、或文件格式不正确”;
}
//解析模板文件
$smarty->assign(“upload_msg”, $upload_msg);
$smarty->display(“upload.tpl”);
?>
{if $upload_msg != “”}
callbackMessage(“{$upload_msg}”);
{/if}
//回调的JavaScript函数,用来以爸爸窗口显示信息
function callbackMessage(msg)
{
 //把父窗口亮信息的层打开
 parent.document.getElementById(“message”).style.display = “block”;
 //把本窗口取之音写及失去
 parent.document.getElementById(“message”).innerHTML = msg;
 //并且设置为3秒后活动关闭父窗口的消息显示
 setTimeout(“parent.document.getElementById(‘message’).style.display =
‘none'”, 3000);
}

//上传表单,指定target属性为扭转框架iframe1
<form action=”/upload.php” method=”post”
enctype=”multipart/form-data” name=”upload_img” target=”iframe1″>
选料而高达污染之图纸:<input type=”file” name=”image”><br />
<input type=”submit” value=”上传图片”>
</form>
//显示提示信息的重合
<div id=”message” style=”display:none”></div>
//用来开靶子窗口的扭转框架
<iframe name=”iframe1″ width=”0″ height=”0″
scrolling=”no”></iframe>
<?php
/* 定义常量 */
//定义允许上传的MIME格式
define(“UPLOAD_IMAGE_MIME”,
“image/pjpeg,image/jpg,image/jpeg,image/gif,image/x-png,image/png”);
//图片允许大小,字节
define(“UPLOAD_IMAGE_SIZE”, 102400);
//图片大小用KB为单位来表示
define(“UPLOAD_IMAGE_SIZE_KB”, 100);
//图片上传的路
define(“UPLOAD_IMAGE_PATH”, “./upload/”);
//获取允许的图像格式
$mime = explode(“,”, USER_FACE_MIME);
$is_vaild = 0;
//遍历所有允许格式
foreach ($mime as $type)
{
 if ($_FILES[‘image’][‘type’] == $type)
 {
  $is_vaild = 1;
 }
}
//如果格式正确,并且没有超大小就达成传上去
if ($is_vaild && $_FILES[‘image’][‘size’]<=USER_FACE_SIZE &&
$_FILES[‘image’][‘size’]>0)
{
 if (move_uploaded_file($_FILES[‘image’][‘tmp_name’],
USER_IMAGE_PATH . $_FILES[‘image’][‘name’]))
 {
  $upload_msg =”上传图片成功!”;
 }
 else
 {
  $upload_msg = “上传图片文件失败”;
 }
}
else
{
 $upload_msg = “上污染图片失败,可能是文件超过”. USER_FACE_SIZE_KB
.”KB、或者图片文件也空、或文件格式不正确”;
}
//解析模板文件
$smarty->assign(“upload_msg”, $upload_msg);
$smarty->display(“upload.tpl”);
?>
{if $upload_msg != “”}
callbackMessage(“{$upload_msg}”);
{/if}
//回调的JavaScript函数,用来以大人窗口显示信息
function callbackMessage(msg)
{
 //把父窗口展示信息的重叠打开
 parent.document.getElementById(“message”).style.display = “block”;
 //把本窗口取的消息写上失去
 parent.document.getElementById(“message”).innerHTML = msg;
 //并且设置也3秒后活动关闭父窗口的音显示
 setTimeout(“parent.document.getElementById(‘message’).style.display =
‘none'”, 3000);
}

  [结束语]
  这是同种异常精美的Web开发技术,虽然出现时较长,但是到现在才逐步火起来,也愿意带为Web开发界一如既往坏革命,让咱们朝RIA(富客户端)的付出迈进,当然,任何东西有利也生弊端,如果过多之以JavaScript,那么客户端将死臃肿,不便民用户的浏览体验,如何当做到快速的亲前提下,还会完成好之用户体验,这就需要Web开发者共同努力了。
  使用异步回调的法经过有点复杂,但是基本实现了Ajax、以及消息提醒的效力,如果接受模板的消息提醒比较多,那么还足以经设置层的艺术来处理,这个自由应转换吧。模板文件:upload.tpl  处理上传的PHP文件:upload.php  大致使用POST方式的过程就是是这样,当然,实际支出状况或许会见重复杂,这即用开发者去逐渐琢磨。  那么当,当用户点击“新闻1”这个链接的当儿,在脚对应之层将显示得之情节,而且页面没有其他刷新。当然,我们地方省略了show.php这个文件,我们只是是只要show.php文件在,并且能够健康工作之打数据库被管id为1之消息提取出来。
<a href=”#” onClick=”getNews(1)”>新闻1</a>
<div id=”show_news”></div>
  你可能会说,这个代码因为若调用XMLHTTP组件,是不是单独发生IE浏览器会使,不是的经过自己考,Firefox也是能以的。
那我们以执行外Ajax操作前,都要先调用我们的InitAjax()函数来实例化一个Ajax对象。
url = “xxx.asp?” + Math.round(Math.random()*100)
强制刷新

  [结束语]
  这是如出一辙种植非常漂亮的Web开发技术,虽然出现时间比较丰富,但是到今天才日渐火起,也期望带被Web开发界相同涂鸦革命,让咱朝RIA(富客户端)的开迈进,当然,任何事物好也发生坏处,如果过多之运用JavaScript,那么客户端将特别臃肿,不便于用户之浏览体验,如何在好快的亲前提下,还能形成好之用户体验,这即得Web开发者共同努力了。
  使用异步回调的方法经过有点复杂,但是基本实现了Ajax、以及信息提示的力量,如果接受模板的音信提醒比较多,那么还可由此设置层的法门来拍卖,这个自由应易吧。模板文件:upload.tpl  处理上传的PHP文件:upload.php  大致使用POST方式的经过尽管是这么,当然,实际开发情况也许会见再复杂,这就是需要开发者去逐渐琢磨。  那么当,当用户点击“新闻1”这个链接的上,在下面对应之层将显示得的情,而且页面没有任何刷新。当然,我们地方省略了show.php这个文件,我们就是一旦show.php文件是,并且会正常干活的由数据库被把id为1的讯息提取出。
<a href=”#” onClick=”getNews(1)”>新闻1</a>
<div id=”show_news”></div>
  你或许会说,这个代码因为要是调用XMLHTTP组件,是勿是只有出IE浏览器会如,不是的通过我试,Firefox也是会动用的。
这就是说我们在实行另外Ajax操作前,都须先行调用我们的InitAjax()函数来实例化一个Ajax对象。
url = “xxx.asp?” + Math.round(Math.random()*100)
强制刷新

汝可能感兴趣的文章:

http://www.bkjia.com/AJaxjc/328906.htmlwww.bkjia.comtruehttp://www.bkjia.com/AJaxjc/328906.htmlTechArticle做一个项目用到Ajax,开始觉得挺好,后来发现一个问题,例如删除一项,恢复之后就不能再接着删除,
必须使等一段时间,后来知道是IE缓…

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图