这是我的代码:
for (var i = 0; i < 2; i++) {
$.ajax({
type: "GET",
async: false,
url: "/MyController/MyMethod",
success: function (data) {
if (i == 0) {
$('#result_progress').hide();
$('#result_msg').hide();
$('#details').show();
} else if (i == 1) {
$.ajax({
type: "GET",
async: true,
url: "/Import/Finish",
success: function (data) {
....
});
}
if (i < 2) {
$('#details').html($('#details').html() + 'someText'));
}
}
});
}
在这个例子中,迭代很小,但我在这里使方法更简单。我知道我可以使用 switch,但这不是重点。实际上,它的循环数量要多得多。没关系,此代码也会发生错误。
这就是发生的事情:如果我在第一个 ajax 调用的成功部分设置断点,并且当我在 Chrome 中调试时,一切都可以正常工作。这就是我所说的工作正常的意思:在方法第一次成功后,我希望隐藏一些 div,并显示我从 ajax 调用得到的消息。第二次输入第一个成功,另一个字符串将添加到前一个。最后,当输入第二个成功部分时,该消息被隐藏,我正在显示一些数据。
这就是发生的事情:在调用 MyMethod 之前一切都很好。当它被调用时,浏览器停止工作。如果我按下鼠标左键,什么也不会发生。当最后一次调用 MyMethod 时,浏览器工作正常,我快速浏览了该消息,然后它显示了来自第二个 ajax 调用的数据。我很快看到的消息是整个消息,来自对 MyMethod 的所有调用,这不应该发生。
我希望在整个 for 循环和 Finish 方法之前显示它。它不应该是相同的信息。每次对 MyMethod 的 ajax 调用它应该会变得更大。