重置缓存中保存的AJAX数据

时间:2016-04-07 22:26:26

标签: jquery ajax caching

每次进行AJAX调用时,结果都会按预期缓存在浏览器中。但是,以前的结果会干扰最近的调用,并且我的网络应用程序中发生了意外操作。

我尝试将cache设为false,但这似乎没有任何效果。如何重置AJAX数据以便只能使用最近的呼叫?

function getProductDetails(selected, obj) {
    if (obj)
        obj.abort();
    }

    var url = <url>;

    //Request
    obj = $.ajax({
        url: url,
        method: 'post',
        cache: false,
        data: {
            action: action,
            frontend: frontend,
            selected: selected
        }
    });

   obj.done(function(data) {
       var items = JSON.parse(data);
       ...
   });
}

$(document).on('ready', function() {
    selected = $('.selected').html();
    var products = getProductDetails(selected, obj);

    $('.tabs-nav li').each(function(){
        $(this).on('click', function(){
            products = getProductDetails(selected, obj);
        });
    });
}

1 个答案:

答案 0 :(得分:1)

我的猜测是Ajax代码非常好。问题是

$('.tabs-nav li').each(function(){
    $(this).on('click', function(){
        products = getProductDetails(selected, obj);  <---
    });
});

您希望所选内容是您点击的内容吗?传递obj也没有意义。

我猜你想要

var obj;
function getProductDetails(selected) {

    if (obj)
        obj.abort();
    }

    var url = <url>;

    //Request
    obj = $.ajax({
        url: url,
        method: 'post',
        cache: false,
        data: {
            action: action,
            frontend: frontend,
            selected: selected
        }
    });

   obj.done(function(data) {
       var items = JSON.parse(data);
       ...
   });
}

$(document).on('ready', function() {
    var selected = $('.selected').html();
    var products = getProductDetails(selected);

    $('.tabs-nav li').each(function(){
        $(this).on('click', function(){
            products = getProductDetails(this.innerHTML);
        });
    });
}