`
许自己一个未来
  • 浏览: 8907 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

jquery.getJSON的缓存问题的解决方法

阅读更多

博客原文:http://mfan.iteye.com/blog/974132

在项目中遇到一个问题,在火狐下,$.getJSON();请求数据一切正常,但是在IE下面,$.getJSON();只请求一次数据,第二次根本就不发送请求了,用fiddler抓取了才知道,第二次没有发送请求,改成了post就正常了,不过在网上查了问题如下。

http://hi.baidu.com/fengluolyn/blog/item/0ac6b7130d8985ddf7039e83.html

$.getJSON()存在缓存问题,如果其调用的url之前曾经调用过的话,回调函数就会直接在缓存李曼取得想要得值,而不是进入到后台,调用存储过程了。

这是一个比较郁闷的问题,不修改的话,用户就只能从新打开一个新页面才能进行修改了。总结如下:

1、让每次调用的url都不一样。

方法:在参数中加一个随机数

例1:


$.getJSON("$!{Root}/a/as.ashx",{"ID":id,"Name":name,"Path":pash, random:Math.random()},function (responseTest){});
 

例2:

"xxx.aspx?randID='+Math.random;
 

例3:

"xxx.aspx?randID='+escape(newDate());
 

2、将cache设为false

$.ajax不缓存版
$.ajax({
type:"GET",
url:'text.html',
cache:false,
dataType:"html",
success:function (msg){
alert(msg);
}
});
 

3、在labels.html文件的顶部加入以下声明:


<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expries" content="-1">
 

4、load函数不仅可以调用html,也可以调用script,比如lables.php,可以再Php文件里在用header函数:

<?php
header("Cache-Control:no-cache,must-revalidate;")
?>
 

5、使用post代替get方法

使用psot方式注意:

设置header的context-type为application/x-www-form-urlencode确保服务器知道实体中有参数变量,通常使用xmlhttprequest对象的setRequestHeader(“Content-type',"application/x-www-form-urlencoded;").例:

XMLHTTP:setRequestHeader('content-type',"application/x-www-form-urlencoded');

参数是名/值--对应的键值对,每对值用&号隔开,如var name=abc&sex=man&age=8;注意var name =update.php?abc&sex=man&age=18;以及var name =?abc $sex=man &age=18;的写法都是错误的

参数在send(参数)方法中发送,例,xmlHttp.send(name)如果是get方式,则直接xmlHttp.send(null)服务器端请求参数区分get与post,如果是get方式则$username =$_GET["username"];如果是post方式,则

$username=$-POST["username"]
 

6、在服务器端加header("Cache-Control: no-cache, must-reva lidate");

7 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("If-Modified-Since","0");
8 在ajax发送请求前加上 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache");

我用了第一种,就万事OK了。也尝试用了其他的,感觉没什么效果。
我也想到,实在不行就清理掉ie中的url缓存之类,查了半天,不得其法。
倒是有很多代替清理历史文件的方法,比如设置回退之类。

分享到:
评论

相关推荐

    Jquery getJson

    `jQuery.getJSON`是jQuery AJAX方法的一种,专门用于从指定URL获取JSON格式的数据。它返回一个Promise对象,可以配合jQuery的`.done()`、`.fail()`和`.always()`等方法处理异步操作的结果。 ### 2. 使用语法 `...

    ie下jquery.getJSON的缓存问题的处理方法

    本文将详细介绍$.getJSON缓存问题的表现、原因以及如何在IE环境下解决此问题。 首先,$.getJSON方法是基于jQuery的$.ajax方法实现的。在IE浏览器中,特别是IE8及更早版本中,由于浏览器对于AJAX请求的缓存处理机制...

    Jquery中$.getScript()$.getJSON

    在jQuery库中,`$.getScript()`和`$.getJSON()`是两种非常实用的异步数据获取方法,它们分别用于加载JavaScript脚本和获取JSON格式的数据。这些方法都是基于jQuery的`$.ajax()`基础构建的,提供了更为简洁和方便的...

    $.getJSON在IE下失效的原因分析及解决方法

    为了让$.getJSON在IE浏览器中也能够正常工作,需要在调用$.getJSON之前,通过jQuery的$.ajaxSetup方法设置全局的AJAX请求不使用缓存。具体的做法就是在发送AJAX请求之前,设置cache参数为false。这样做之后,AJAX...

    Jquery $.getJSON 在IE下的缓存问题解决方法

    在使用jQuery的$.getJSON方法与IE浏览器配合时,可能会遇到因浏览器缓存导致的数据不刷新问题。针对此问题,通过在请求的URL后附加一个随机数参数是一种有效的解决方案。这种方法不仅简单易行,而且不需要对现有的...

    jQuery中$.ajax()和$.getJson()同步处理详解

    在jQuery中,$.ajax()和$.getJSON()是两种常见的用于发送Ajax请求的方法,它们主要用于与服务器进行异步数据交互。然而,在某些特定场景下,如处理表单提交前的验证,可能需要同步处理请求,确保数据正确无误后再...

    学习jQuery中的Ajax——$.get()方法

    结合其他jQuery的Ajax方法,如`$.post()`和`$.getJSON()`,我们可以构建出功能丰富的、用户体验良好的Web应用。在实际开发中,理解并熟练运用这些工具至关重要,以便更好地优化和提升我们的项目。

    通过jquery的$.getJSON做一个跨域ajax请求试验

    在本文中,我们将探讨如何使用jQuery的`$.getJSON`方法进行跨域Ajax请求,并通过一个简单的预约登记接口的示例来展示其实现过程。首先,理解`$.getJSON`是jQuery库提供的一个便捷方法,用于异步获取JSON格式的数据,...

    无刷新分页 jquery.pagination.js

    3. **Ajax请求**:jQuery中的$.ajax或$.getJSON方法用于发起异步请求,获取分页数据。这些请求通常包括URL、请求类型(GET或POST)、成功回调函数等参数。 4. **前端渲染**:收到服务器响应后,使用jQuery操作DOM,...

    JSON与JQUERY

    例如,可以使用`$.getJSON()`方法获取JSON数据并直接操作HTML元素。 5. **跨域问题**:了解AJAX请求时可能出现的同源策略限制,并探讨如何通过JSONP(JSON with Padding)或者CORS(Cross-Origin Resource Sharing...

    Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

    在jQuery中,有四种主要的Ajax方法用于与服务器进行异步数据交互,它们分别是$.get(), $.post(), $.ajax()和$.getJSON()。这些方法简化了JavaScript中的Ajax操作,使得开发者能够更加便捷地处理数据交互。 1. **$....

    jquery获取json数据的并分页案例

    要使用jQuery获取JSON数据,我们通常会使用`$.ajax()`或`$.getJSON()`方法。`$.ajax()`是一个更全面的异步HTTP(Ajax)请求方法,可以处理各种类型的HTTP请求,包括GET和POST。而`$.getJSON()`是`$.ajax()`的一个...

    jQuery中Ajax的get、post等方法详解.docx

    本文主要解析jQuery中的$.get()、$.post()等方法,以及相关的$.getScript()和$.getJSON()方法。 首先,$.get()方法是使用HTTP GET请求方式向服务器获取数据。其基本语法如下: ```javascript $.get(url, data, ...

    jquery-1.11.3.js 、jquery-1.11.3.min.js 【官方jquery包 js】

    jQuery的`$.ajax()`方法是进行异步数据请求的核心,它可以处理JSON、XML、HTML等多种格式的数据。还有`$.get()`, `$.post()`等简化版的API,使得Ajax请求更为便捷。 6. **链式操作(Chaining)** jQuery的一个...

    jQuery中Ajax的get、post等方法详解.pdf

    本文主要解析jQuery中的$.get()、$.post()等Ajax方法,以及相关的$.getScript()和$.getJSON()方法。 首先,$.get()方法是使用GET方式发送异步请求,基本语法如下: ```javascript $.get(url, data, callback, type...

    Packtpub.jQuery.1.4.Reference.Guide.Jan.2010.rar

    同时,也会介绍如何调试jQuery代码,以帮助开发者解决问题。 通过阅读《Packtpub.jQuery.1.4.Reference.Guide.Jan.2010》,开发者不仅可以掌握jQuery 1.4的核心知识,还能提升Web开发的整体技能,为构建现代、响应...

Global site tag (gtag.js) - Google Analytics