Javascript 阻止文档就绪时的UI

Javascript 阻止文档就绪时的UI,javascript,php,jquery,html,web,Javascript,Php,Jquery,Html,Web,我正在开发一个web应用程序,它需要与Internet Explorer 8兼容(您知道,与地狱兼容)。问题是我正在上传一个文件,稍后由PHP代码处理并刷新页面。当我有一个已处理的文件时,我使用该文件将数据插入表中,因此在插入该数据时,我需要一个processbar和block UI(我需要为每一行调用另一个PHP进程) 问题是下一个问题,我想阻止该UI,我已经解决了逻辑和所有兼容性问题;但是工作5天后,我无法阻止UI。这是一个最低限度的代码(它封装了我们所需要的一切),以简化想法: $

我正在开发一个web应用程序,它需要与Internet Explorer 8兼容(您知道,与地狱兼容)。问题是我正在上传一个文件,稍后由PHP代码处理并刷新页面。当我有一个已处理的文件时,我使用该文件将数据插入表中,因此在插入该数据时,我需要一个processbar和block UI(我需要为每一行调用另一个PHP进程)

问题是下一个问题,我想阻止该UI,我已经解决了逻辑和所有兼容性问题;但是工作5天后,我无法阻止UI。这是一个最低限度的代码(它封装了我们所需要的一切),以简化想法:

    $(document).ready({
    (...)
        $("#title").html('some text');
        $("#bar").html('');
        $.blockUI({message: $('#window'),css:{width:'303px'}});
        go = true;
        while (go){
            $.ajax({<ASYNC FALSE AJAX CALL});
            if (!file.lines) go = false;
            <update progress>
        }

        $.unblockUI();
    (...)
    });
$(文档)。准备好了吗({
(...)
$(“#title”).html(“一些文本”);
$(“#bar”).html(“”);
$.blockUI({message:$('#window'),css:{width:'303px'}});
去=真;
while(go){

$.ajax({我认为主要是因为同步,但如果使其异步,则需要在代码中进行更改。删除while循环并调用一个函数,该函数将进行异步调用,并在成功完成时递归调用同一个函数。一旦满足终端条件,请按如下所示取消阻止UI:

 $.blockUI({message: $('#window'),css:{width:'303px'}});
 //  based on the above code I assume you will get file as a response.
 process();

 function process(file){
     if (file && !file.lines){
         $.unblockUI();
     }

     $.ajax({<ASYNC TRUE AJAX CALL})
      .done(function(file){                   
               <update progress>
               process(file);
          });
 }
$.blockUI({message:$('#window'),css:{width:'303px'}});
//基于以上代码,我假设您将得到一个响应文件。
过程();
函数进程(文件){
if(文件&&!file.line){
$.unbui();
}

$.ajax({尝试删除
async:false
。使用它是非常糟糕的做法,这意味着你的UI不会被更新,这将干扰你正在使用的
blockUI
插件。你会遇到任何错误。或者你有小提琴吗?我不能删除
async:false
,我知道这是一个糟糕的做法,但我需要在这段c上使用它ode@Rorymcrossan。我没有任何错误,开发人员控制台显示了关于
async:false
的典型警告。我99%确信,没有
async:false
,还有另一种方法可以完成您所需的任务,我也非常确定这就是问题的原因。@Rorymcrossan我刚刚尝试了
async:true
删除<代码>while
条件(如果我在它阻止浏览器时离开它)仍然不工作。非常感谢。这是一个完美的主意。我没有考虑递归函数。所以现在它工作正常。谢谢!!!!
 $.blockUI({message: $('#window'),css:{width:'303px'}});
 //  based on the above code I assume you will get file as a response.
 process();

 function process(file){
     if (file && !file.lines){
         $.unblockUI();
     }

     $.ajax({<ASYNC TRUE AJAX CALL})
      .done(function(file){                   
               <update progress>
               process(file);
          });
 }