2

使用 IE 运行时,我的 MVC 程序有这个小问题:

我有一个 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 等中运行良好。

在这种情况下是否有任何选项可以防止缓存?

4

3 回答 3

3

尝试以下

function editSkills(projectId, roleId) {
 $.ajax({
        url: '../../Project/EditSkills?projectID=' + projectId + '&roleID=' +    roleId,
        type: "GET",
        cache: false,
        data: 'html',
        success: function (data) {
             $('#infoPanel').html(data);
        }
    });

}      
于 2013-06-14T12:25:51.173 回答
1

您正在使用 $.get,因此是缓存。它在内部使用 $.ajax,您应该将其与 cache:false 一起使用以避免缓存。

如果您坚持使用 $.get,请附加一些随机数来获取参数以避免缓存所有浏览器。

于 2013-06-14T12:26:44.037 回答
1

而不是使用 get,我认为使用 $.ajax 会更好($.get 是 $.ajax 的简写)。在 ajax 方法中,您可以将“缓存”参数设置为 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);
    }
  });

}

于 2013-06-14T12:34:00.173 回答