JQuery .html()函数在IE中似乎没有必要缓存
本文关键字:缓存 html 函数 IE JQuery | 更新日期: 2023-09-27 18:18:18
我有这个小问题与我的MVC程序,当运行在IE:
我有一个JQuery函数,它去到一个控制器来获取一个局部视图,它被加载到一个目标<div>
元素。
function editSkills(projectId, roleId) {
$.get('../../Project/EditSkills?projectID=' + projectId + '&roleID=' + roleId, function (data) {
$('#infoPanel').html(data);
});
}
控制器EditSkills()
功能:
public virtual ActionResult EditSkills(int projectID, int roleID)
{
//various pieces of logic
return PartialView("EditSkills");
}
第一次调用该函数时似乎工作正确,但后续调用立即返回相同的信息,即使底层数据已被修改。
我怀疑这是一个缓存问题(因为IE应该是过分热心这样做)。因为它在Chrome等完美地工作。
在这种情况下是否有防止缓存的选项?
试试下面的
function editSkills(projectId, roleId) {
$.ajax({
url: '../../Project/EditSkills?projectID=' + projectId + '&roleID=' + roleId,
type: "GET",
cache: false,
data: 'html',
success: function (data) {
$('#infoPanel').html(data);
}
});
}
您正在使用$。Get,因此需要缓存。在内部它使用$。Ajax,您应该使用cache:false来避免缓存。
如果你坚持使用$。Get,为Get参数附加一些随机数,以避免在所有浏览器中缓存
不使用get,我认为使用$会更好。Ajax代替($。Get是$.ajax的缩写)。在ajax方法中,您可以将"cache"参数设置为false。像这样:
function editSkills(projectId, roleId) {
$.ajax({
url:'../../Project/EditSkills?projectID=' + projectId + '&roleID=' + roleId,
type:'GET',
cache:false,
success: function (data, textStatus, jqXHR) {
$('#infoPanel').html(data);
}
});
}