我有以下代码。该函数被多次调用,具体取决于用户选中或取消选中复选框。
这适用于IE10 / 11以外的所有浏览器。在IE中,ajax调用仅针对特定ID进行一次。后续调用实际上并未发送到服务器,但似乎是从缓存中提取的。
在F12开发人员工具中,似乎正在向服务器发出呼叫,但Fiddler表明它实际上并未发生。
F12还显示对该呼叫的304响应。
如何确保始终对服务器进行呼叫?
function updateReportTypes(event) {
var value = event.currentTarget.value;
if (event.currentTarget.checked) {
$.ajax({
url: "/PropertySearch/Order/AddReportType?id=" + value,
dataType: 'html',
success: function (data) {
$('#reportTypes').html(data);
hideProgress();
}
});
}
else {
$.ajax({
url: "/PropertySearch/Order/RemoveReportType?id=" + value,
dataType: 'html',
success: function (data) {
$('#reportTypes').html(data);
hideProgress();
}
});
}
}
答案 0 :(得分:1)
简单设置:
cache: false
$.ajax()
的参数。当你这样做时,jQuery会自动在URL上添加一个唯一的参数,以防止任何缓存请求。
使用该选项将如下所示:
$.ajax({
url: "/PropertySearch/Order/AddReportType?id=" + value,
dataType: 'html',
cache: false,
success: function (data) {
$('#reportTypes').html(data);
hideProgress();
}
});
关于此选项的jQuery doc:http://api.jquery.com/jquery.ajax/
答案 1 :(得分:0)
我不熟悉这个特定问题,但是如果其他所有问题都失败了,您应该能够添加动态缓存破坏值(例如时间戳),以使您的网址唯一:
url: "/PropertySearch/Order/RemoveReportType?id=" + value + "&" + Date.now().toString()