日期:2014-05-16  浏览次数:20407 次

jquery getJson IE下再次调用回调函数无效不起作用解决

项目使用jqery combox ajax 下拉列表,在IE下第一次打开没有问题可从后台获得数据,但是的二次打开不能从后台获得最新数据,跟踪发现第二次打开回调函数没有起作用,仍然是上次老数据。在firefox和Chrome下则没有这个问题。

后发现是jquery ajax 缓存设置问题。原来数据被IE缓存了,原来getJSON是jquery数据交互中的第三层,最底层就是$.ajax(),$.ajax()中有个cache参数,将其改为false,就能解决上述问题。

代码修改如下

$.ajaxSetup({
    	async:false,
    	cache:false
 )};
?

$.ajax()的参数列表:

参数名 类型 描述
url String (默认: 当前页地址) 发送请求的地址。
type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。
timeout Number 设置请求超时时间(毫秒)。此设置将覆盖全局设置。
async Boolean (默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
beforeSend Function 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。
function (XMLHttpRequest) {
  this; // the options for this ajax request
}
cache Boolean (默认: true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中加载请求信息。
complete Function