Div.Show在运行时不起作用,但在单步执行代码时确实有效

时间:2014-01-07 16:02:56

标签: javascript css ajax jquery

我有一个div,在保存时应该出现。此标记与此类似:

<div class="Working" style="display: none;">Message</div>

稍后在我的代码中我有一些保存逻辑,它执行此操作:

function SaveData() {
    var cancelSave = false;

    $('.Working').text('Saving data ...').show();
    var saveData = { 'Data': myData }; // Actually a lot of logic in here

    if (cancelSave) {
        $('.Working').hide();
    } else {
        $.ajax({
            // bunch of stuff here
            async: false, // tried this both ways
            error: function (rsp) {
                $('.Working').hide();
            },
            success: function (rsp) {
                $('.Working').text('Saved');
                $('.Working').fadeOut(5000, DoNothing());
            }
        });
    }
}

function DoNothing() {
    // Does nothing
}

如果我单步执行代码,当我逐步执行初始.show()行时,div会完美显示。但是,当我以“全速”运行时...我从未看到“保存数据...”消息。实际保存大约需要5-7秒,因此有足够的时间来查看消息。

2 个答案:

答案 0 :(得分:1)

UI被锁定,因为ajax async属性设置为false。将其设置为true并尝试一下。 SaveData方法将完成,更新UI以显示“保存数据...”文本,然后在ajax调用返回时再次更新。

答案 1 :(得分:-1)

尝试在 Chrome 调试上运行。我不需要更改任何代码。之后就可以了。