我有一个相当长的运行提交,所以我实现了一个带有进度条的模式对话框来显示进度。我第一次提交表单时一切正常。进度条正在更新(我在成功处理程序中使用 setTimeout 每 500 毫秒检查一次进度)并显示在模式对话框中。它下面的 div 的内容也被更新,当一切都完成后,表单提交。这就是它变得棘手的地方......
在我第一次提交表单后,除了重置我的 IIS Express 之外,不可能让进度条再次更新。显示模式对话框,我可以看到第一个 json 请求被触发,但它只是等待并在提交完成后立即中止。我尝试向 $.ajax 调用添加超时,添加标头以不缓存 json 调用的结果,我尝试清除超时但都无济于事。
我认为问题与 setTimeout 被表单提交中止(以及在表单提交后完成的重定向)有关。不知何故,我似乎无法找到真正的罪魁祸首。
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();
});