ie9 jquery ajax调用第一次做得好第二次不行



IE9和jquery AJAX问题...."如果我第一次点击按钮,它就会运行良好,但第二次就不行了……我猜是cache。"jquery https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js和简单的ajax调用:

$('#isvalidcompany').click(function(event) {
    var image = $('#isvalidcompany_img');
    var old_state = image.attr('src');
    image.attr('src', '/images/loading.gif');
    $.getJSON('/ajax/change',
        function(data) {
            if (data['error'] != '') {
                image.attr('src', old_state);
                $('#isvalidcompany_error').html(data['error']);
            } else {
                if (data['isvalidcompany'] == 1) {
                    image.attr('src', '/icons/tick_16.png');
                } else {
                    image.attr('src', '/icons/delete_16.png');
                }
            }
        });
    return false;
});

除了ie9、ie8和ie7,它在所有浏览器上都运行良好所以如果有人有这方面的经验,请分享:)

使用.ajax()方法的cache参数:

$.ajax({
  url: "/ajax/change",
  success: function(data){
    // your callback
  },
  dataType: JSON,
  cache: false
});

[EDIT] Anthony的解决方案将防止缓存每个请求,而我的解决方案将防止缓存当前请求…看看什么更适合你的需求

是的,Internet Explorer将AJAX调用的响应缓存到相同的URL。您可以使用下面的代码来解决这个问题:

$.ajaxSetup({
    cache: false
});

将所有jQuery AJAX调用的缓存属性设置为false,这将导致自动包含时间戳参数。

我经历过这样的错误一次,我是一个缓存问题,所以解决它,每次我发送一个新的ajax请求,我附加了一个新的随机数的url。

发生的情况是,您可能为AJAX调用向web服务发出GET请求。Internet Explorer将自动缓存来自GET请求的响应,而其他浏览器将让您决定是否要缓存结果。一旦IE成功发出GET请求,它甚至不会再发出AJAX调用,直到该对象的缓存过期。查看更多详细信息

//禁用所有jQuery AJAX请求的缓存

$。

很可能是缓存。IE实际上是正确的:)

您可以使用cache: false参数,也可以使用POST而不是GET

相关内容

最新更新