0

我有一个使用 JQuery Load 事件调用控制器方法并检索数据的操作,这工作正常,我单击一个按钮,新内容又回来了。但是,在第三次单击后,它会停止获取数据。我在方法的顶部添加了一个断点,并注意到它被命中 3 次,然后没有被命中。这是我的jQuery代码:

function callAction() {
    var url = '@Url.Action("Method", "Controller", new { type = "test" })';
    $("#divToLoadData").load(url);
}

正如我所说,这会加载数据,每次我单击链接以调用该函数时,但在第三次检索后,它无法调用该方法并检索数据。我也尝试过使用 $.ajax,并且得到了类似的结果。

有人遇到过类似的吗??

4

1 回答 1

0

由于jQuery.load()执行 GET 浏览器可能会缓存请求的结果并提供它而不是访问服务器。您可以通过设置内容过期标头强制浏览器始终将请求发送到服务器。用这个属性装饰你的动作:

public class NoCacheAttribute : ActionFilterAttribute
{
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        if (filterContext.IsChildAction)
            return;

        filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
        filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
        filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
        filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        filterContext.HttpContext.Response.Cache.SetNoStore();

        base.OnResultExecuting(filterContext);
    }
}
于 2012-06-12T08:04:19.150 回答