“奇怪”;“缓存问题”;使用JQuery加载的MVC应用程序
我有一个操作,它使用JQuery加载事件调用控制器方法并检索数据,这很好,我单击一个按钮,然后返回新内容。但是,在第三次单击后,它将停止获取数据。我在方法的顶部添加了一个断点,注意到它被击中了3次,然后没有被击中。以下是我的jquery代码:“奇怪”;“缓存问题”;使用JQuery加载的MVC应用程序,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我有一个操作,它使用JQuery加载事件调用控制器方法并检索数据,这很好,我单击一个按钮,然后返回新内容。但是,在第三次单击后,它将停止获取数据。我在方法的顶部添加了一个断点,注意到它被击中了3次,然后没有被击中。以下是我的jquery代码: function callAction() { var url = '@Url.Action("Method", "Controller", new { type = "test" })'; $("#divToLoadData").load
function callAction() {
var url = '@Url.Action("Method", "Controller", new { type = "test" })';
$("#divToLoadData").load(url);
}
正如我所说的,每次单击链接调用该函数时,都会加载数据,但在第三次检索之后,它无法调用该方法并检索数据。我也尝试过使用$.ajax,结果类似
任何人都会遇到类似的情况???,因为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);
}
}
您是否尝试过使用
cache:false
选项的ajax?我确实尝试过,但也没有成功:(您是否使用Firebugnet
选项卡或开发者工具中的chromenetwork
选项卡在第三次单击请求后检查了请求是否被发送,以及服务器返回了什么。是的,在停止一定数量的请求后,似乎什么也没有被发送。不过,如果我等待大约2分钟,我的断点会停止ts再次命中…发生了一些非常不寻常的事情…不幸的是,这也不起作用,我在属性中设置了一个断点,以确保它也被命中并且上下文被设置,这是一次命中几次,然后也停止了。虽然我现在注意到一些奇怪的行为,在点击链接几次之后,它没有发生如果没有任何数据,实际的应用程序本身会冻结…你是说你的浏览器会冻结吗?不,浏览器不会冻结,只是应用程序本身。什么是冻结?CPU会100%运行吗?web服务器不会再处理任何请求吗?-看起来你在其他地方遇到了问题…看起来web服务器本身没有问题在一定数量的请求之后,它不会处理任何请求。几分钟后,它会用正确的数据再次响应,但这似乎是在一致数量的请求之后,目前是3。这很不寻常。。。