Принудительно вызвать ajax для очистки кэша
У меня есть смс, в котором я могу изменить положение объектов. После каждой смены позиции ajax call обновляет весь список объектов. Но, к сожалению, некоторые данные хранятся в кеше, и никаких изменений не видно. Есть ли способ принудительно очистить кеш с помощью javascript/request/other? Я пробовал "кеш: ложь" в $.ajax
но это не работает
Вот пример страницы:
http://ntt.vipserv.org/manage/playforward
И мой JS:
$(".object-position").livequery("change", function() {
$("#objects-list input").attr('disabled', true);
var action = $(this).attr('name');
var position = $(this).attr('value');
var id = $(this).attr("id");
var model = id.split("-")[0];
var object_id = id.split("-")[1];
$("#loader").show();
$("#loader").fadeIn(200);
$.ajax({
type: "POST",
async: true,
url: "/manage/update_position/",
data: "action=" + action + "&model=" + model + "&object_id=" + object_id + "&position=" + position,
dataType: "json",
success: function(data){
$("#loader").fadeOut("fast", function () {
$("#loader").hide();
});
$("objects-list").html(data["html"]);
$("#message").show();
$("#message").fadeIn(400).html('<span>'+data["message"]+'</span>');
setTimeout(function(){
$("#message").fadeOut("slow", function () {
$("#message").hide();
});
}, 1500);
}
});
$("#objects-list input").attr("disabled", false);
return false;
});
3 ответа
У тебя есть
$("objects-list").html(data["html"]);
Попробуйте это вместо этого:
$(".objects-list").html(data["html"]); // forgot leading dot?
Кроме того, похоже, что вы пытаетесь заменить содержимое .objects-list
таблица с некоторым HTML, который включает в себя <table>
сам элемент. Так что вы бы <table...><table...>
и т. д. после .html()
замена контента.
Какие cache: false
делает, чтобы добавить время к данным запроса, так что каждый запрос является уникальным и поэтому обходит кеш браузера. Интересно, вызывает ли проблема тот факт, что вы используете строку данных, а не объект? Попробуйте вместо этого использовать объект:
$.ajax({
type: "POST",
async: true,
url: "/manage/update_position/",
data: {
"action": action.
"model": model,
"object_id": object_id,
"position": position
},
cache: false,
dataType: "json",
success: function(data){
//[snip]
}
});
Просто замени
url: "/manage/update_position/",
с
url: "/manage/update_position/?nocache="+Math.random(),
to force reloading the page not using the browser's cache.