第一次jQuery json Ajax调用后不再有效(包括表单提交,setTimeout)

时间:2013-06-06 18:18:39

标签: javascript jquery asp.net-mvc-4

我有一个相当长时间运行的提交,所以我实现了一个带有进度条的模态对话框来显示进度。 第一次我提交表单一切正常。正在更新进度条(我在成功处理程序中使用setTimeout来检查每500毫秒的进度)并显示在模式对话框中。它下面的div的内容也会更新,当一切都完成后,表单会提交。这就是它变得棘手的地方......

我第一次提交表单后,不可能让进度条再次更新,而不是重置我的IIS Express。模态对话框是showm,我可以看到第一个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();
});

1 个答案:

答案 0 :(得分:1)

要向您的ajax请求添加cache: false。我在MVC应用程序中遇到了同样的问题,直到将其设置为false。你不会找到关于它的好文档,这是我不久前在一个不起眼的网站上挖出的东西。

编辑:我已经纠正,http://api.jquery.com/jQuery.ajax/