好的,所以我有一个模糊的问题。我知道问题所在和解决方案,但我不明白为什么。
有一种方法可以逐步完成一些准备工作、验证、保存和清理。我们在几个不同的情况下都有这个逻辑。我希望了解为什么第一种方法有效但第二种方法显示“doneMessage”的损坏图像是否有丢失的参考或类似的东西?
我想我会在刷新页面之前得到关于为什么 UI 被阻止的问题。在调用此方法之前,UI 被一条请等待消息阻塞,该消息完美运行。这只是对用户的视觉确认,即在刷新页面之前确实发生了保存。
AjaxCall 的代码只是一个简单的 JSON AJAX 调用。如果需要,我可以发布代码,但我认为它与问题无关。
这适用于 AJAX 调用的成功处理程序中的 $.blockUI 调用
function Step(stepNumber) {
switch (stepNumber) {
case 1:
ajaxParameters = "blah:'" + blah + "', yada:" + yada;
setTimeout(function () { Step(2) }, 50);
break;
case 2:
AjaxCall("FormStyle.aspx", "Validate", ajaxParameters, function () {
setTimeout(function () { Step(3) }, 50);
});
break;
case 3:
AjaxCall("FormStyle.aspx", "Save", ajaxParameters, function () {
$.blockUI({ message: doneMessage, css: { padding: 5} });
setTimeout(function () { RefreshCurrentPage() }, 50);
});
break;
}
}
然而,事实并非如此。它显示损坏的图像:
function Step(stepNumber) {
switch (stepNumber) {
case 1:
ajaxParameters = "blah:'" + blah + "', yada:" + yada;
setTimeout(function () { Step(2) }, 50);
break;
case 2:
AjaxCall("FormStyle.aspx", "Validate", ajaxParameters, function () {
setTimeout(function () { Step(3) }, 50);
});
break;
case 3:
AjaxCall("FormStyle.aspx", "Save", ajaxParameters, function () {
setTimeout(function () { Step(4) }, 50);
});
break;
case 4:
$.blockUI({ message: doneMessage, css: { padding: 5} });
RefreshCurrentPage()
break;
}
}