ie9 jquery ajax第一次打电话第二次做得不好

Dak*_*aka 7 jquery

IE9和jquery AJAX问题...."如果我点击按钮第一次它运行良好,但第二次没有...我假设缓存"我有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;
});
Run Code Online (Sandbox Code Playgroud)

并且在所有浏览器上它运行良好,除了ie9和ie8和ie7所以如果今天有任何经验,请分享:)

JMa*_*Max 11

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

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

[编辑]安东尼的解决方案将阻止每个请求缓存,而我的解决方案将阻止缓存当前请求...查看更符合您需求的内容


Ant*_*ist 6

是的,Internet Explorer将对AJAX调用的响应缓存到同一URL.您可以使用以下代码来解决此问题:

$.ajaxSetup({
    cache: false
});
Run Code Online (Sandbox Code Playgroud)

这会将所有jQuery AJAX调用的cache属性设置为false,这将导致自动包含timestamp参数.


Ghy*_*hal 2

我曾经遇到过这样的错误,我是一个缓存问题,所以解决它,每次发送新的ajax请求时,我都会在url中附加一个新的随机数。

希望这对您有帮助。