每次进行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);
});
});
}
答案 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);
});
});
}