Javascript jQuery json Ajax调用在第一次调用后不再工作(包括表单提交、setTimeout)
我有一个相当长的提交运行时间,所以我实现了一个带有进度条的模式对话框来显示进度。第一次提交表单时,一切正常。进度条正在更新(我在成功处理程序中使用setTimeout每500毫秒检查一次进度),并显示在模式对话框中。下面div的内容也会更新,完成所有操作后,表单会提交。这就是它变得棘手的地方 在我第一次提交表单后,除了重置我的IIS Express之外,无法再次更新进度条。模式对话框是showm,我可以看到第一个json请求被触发,但它只是等待并在提交完成后立即中止。我尝试向$.ajax调用添加超时,添加头以不缓存json调用的结果,我尝试清除超时,但都没有用 我认为问题与表单提交中止setTimeout有关(表单提交后重定向完成)。不知怎么的,我似乎找不到真正的罪犯Javascript jQuery json Ajax调用在第一次调用后不再工作(包括表单提交、setTimeout),javascript,jquery,asp.net-mvc-4,Javascript,Jquery,Asp.net Mvc 4,我有一个相当长的提交运行时间,所以我实现了一个带有进度条的模式对话框来显示进度。第一次提交表单时,一切正常。进度条正在更新(我在成功处理程序中使用setTimeout每500毫秒检查一次进度),并显示在模式对话框中。下面div的内容也会更新,完成所有操作后,表单会提交。这就是它变得棘手的地方 在我第一次提交表单后,除了重置我的IIS Express之外,无法再次更新进度条。模式对话框是showm,我可以看到第一个json请求被触发,但它只是等待并在提交完成后立即中止。我尝试向$.ajax调用添加
function DoSomething() {
$.ajax(
{
type: "POST",
contentType: "application/json;charset=utf-8",
url: "/Controller/Action",
dataType: "json",
timeout: 400,
success: function (data) {
if (data) {
if ($('progress').prop('max') !== data.total) {
$('progress').attr({ max: data.total });
}
$('progress').attr({ value: data.current });
$('#progressText').html(data.current + ' / ' + data.total);
}
setTimeout(DoSomething, 500);
}
});
}
在我使用这个的视图中
$("form").submit(function () {
$('#thisIsMyModal').modal({
backdrop: 'static',
keyboard: false
});
DoSomething();
});
在ajax请求中添加一个
缓存:false
。我在MVC应用程序中遇到了同样的问题,直到将其设置为false。不过,你不会找到关于它的好文档,这是我不久前在一个不知名的网站上找到的
编辑:我已更正,您是否缓存了控制器的响应?您还可以发布每个调用Ajax调用的响应吗?我在控制器操作中添加了持续时间为0和NoStore的OutputCache属性。我还添加了一个缓存控制头no cache to now avail.以下是一些响应:{“current”:0,“total”:951},{“current”:49,“total”:951},{“current”:109,“total”:951}响应头:键值响应HTTP/1.1200 OK缓存控制私有内容类型应用程序/json;charset=utf-8服务器Microsoft IIS/8.0 X-AspNetMvc-Version 4.0 X-AspNet-Version 4.0.30319 X-SourceFiles=?utf-8?B?rdpcrgv2zwvcg1lbnrcmlja3zkym9zy2hcum9lzmvsxfjvzwzlbc5xwiutxzjjjjjjjlagvlxhzrtznzaw9uc0nsyxnzawzpzwq=?=X-Powered-By-By-By-ASP.NET日期2013年6月6日18:34:20 GMT内容长度26