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等完美地工作。

在这种情况下是否有防止缓存的选项?

JQuery .html()函数在IE中似乎没有必要缓存

试试下面的

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);
    }
  });

}