博客原文: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 AJAX方法的一种,专门用于从指定URL获取JSON格式的数据。它返回一个Promise对象,可以配合jQuery的`.done()`、`.fail()`和`.always()`等方法处理异步操作的结果。 ### 2. 使用语法 `...
本文将详细介绍$.getJSON缓存问题的表现、原因以及如何在IE环境下解决此问题。 首先,$.getJSON方法是基于jQuery的$.ajax方法实现的。在IE浏览器中,特别是IE8及更早版本中,由于浏览器对于AJAX请求的缓存处理机制...
在jQuery库中,`$.getScript()`和`$.getJSON()`是两种非常实用的异步数据获取方法,它们分别用于加载JavaScript脚本和获取JSON格式的数据。这些方法都是基于jQuery的`$.ajax()`基础构建的,提供了更为简洁和方便的...
为了让$.getJSON在IE浏览器中也能够正常工作,需要在调用$.getJSON之前,通过jQuery的$.ajaxSetup方法设置全局的AJAX请求不使用缓存。具体的做法就是在发送AJAX请求之前,设置cache参数为false。这样做之后,AJAX...
在使用jQuery的$.getJSON方法与IE浏览器配合时,可能会遇到因浏览器缓存导致的数据不刷新问题。针对此问题,通过在请求的URL后附加一个随机数参数是一种有效的解决方案。这种方法不仅简单易行,而且不需要对现有的...
在jQuery中,$.ajax()和$.getJSON()是两种常见的用于发送Ajax请求的方法,它们主要用于与服务器进行异步数据交互。然而,在某些特定场景下,如处理表单提交前的验证,可能需要同步处理请求,确保数据正确无误后再...
结合其他jQuery的Ajax方法,如`$.post()`和`$.getJSON()`,我们可以构建出功能丰富的、用户体验良好的Web应用。在实际开发中,理解并熟练运用这些工具至关重要,以便更好地优化和提升我们的项目。
在本文中,我们将探讨如何使用jQuery的`$.getJSON`方法进行跨域Ajax请求,并通过一个简单的预约登记接口的示例来展示其实现过程。首先,理解`$.getJSON`是jQuery库提供的一个便捷方法,用于异步获取JSON格式的数据,...
3. **Ajax请求**:jQuery中的$.ajax或$.getJSON方法用于发起异步请求,获取分页数据。这些请求通常包括URL、请求类型(GET或POST)、成功回调函数等参数。 4. **前端渲染**:收到服务器响应后,使用jQuery操作DOM,...
例如,可以使用`$.getJSON()`方法获取JSON数据并直接操作HTML元素。 5. **跨域问题**:了解AJAX请求时可能出现的同源策略限制,并探讨如何通过JSONP(JSON with Padding)或者CORS(Cross-Origin Resource Sharing...
在jQuery中,有四种主要的Ajax方法用于与服务器进行异步数据交互,它们分别是$.get(), $.post(), $.ajax()和$.getJSON()。这些方法简化了JavaScript中的Ajax操作,使得开发者能够更加便捷地处理数据交互。 1. **$....
要使用jQuery获取JSON数据,我们通常会使用`$.ajax()`或`$.getJSON()`方法。`$.ajax()`是一个更全面的异步HTTP(Ajax)请求方法,可以处理各种类型的HTTP请求,包括GET和POST。而`$.getJSON()`是`$.ajax()`的一个...
本文主要解析jQuery中的$.get()、$.post()等方法,以及相关的$.getScript()和$.getJSON()方法。 首先,$.get()方法是使用HTTP GET请求方式向服务器获取数据。其基本语法如下: ```javascript $.get(url, data, ...
jQuery的`$.ajax()`方法是进行异步数据请求的核心,它可以处理JSON、XML、HTML等多种格式的数据。还有`$.get()`, `$.post()`等简化版的API,使得Ajax请求更为便捷。 6. **链式操作(Chaining)** jQuery的一个...
本文主要解析jQuery中的$.get()、$.post()等Ajax方法,以及相关的$.getScript()和$.getJSON()方法。 首先,$.get()方法是使用GET方式发送异步请求,基本语法如下: ```javascript $.get(url, data, callback, type...
同时,也会介绍如何调试jQuery代码,以帮助开发者解决问题。 通过阅读《Packtpub.jQuery.1.4.Reference.Guide.Jan.2010》,开发者不仅可以掌握jQuery 1.4的核心知识,还能提升Web开发的整体技能,为构建现代、响应...