代码之家  ›  专栏  ›  技术社区  ›  0plus1

JavaScript for loop正在使UI无响应

  •  0
  • 0plus1  · 技术社区  · 15 年前

    我正在制作一个邮件列表脚本,它利用ajax(async=false)成批发送电子邮件。

    基本上循环是这样的:

    var i = 0;
    for(i;i<num_rows;i=i+mxt){
        if($("#panic").val()=='1'){
            break;
        }
        perc = (i*100)/num_rows;
        startThread(i,perc);
    }
    

    我做错什么了?

    谢谢你

    function startThread(i,perc){
    l_a = i;
    l_b = mxt;
    
    headers = '&mail_from='+mail_from+'&mail_from_name='+mail_from_name+'&mail_subject='+mail_subject;
    
    $.ajax({  
        type: "POST", url: "ajax/thread.php", data: "l_a="+l_a+"&l_b="+l_b+headers, 
        success: function(html){ $("#progressbar").progressbar({value: perc}); },
        async: false
     });
    }
    
    1 回复  |  直到 15 年前
        1
  •  4
  •   Daniel Vassallo    15 年前

    你的 startThread()

    既然你用的是 async=false ,的 $.ajax

    引用 jQuery documentation (重点补充):

    默认情况下,所有请求都是异步发送的(即,默认设置为true)。如果需要同步请求,请将此选项设置为false。跨域请求和数据类型:“jsonp”请求不支持同步操作。

    • 把数据放在一个JSON对象中,只发送一个 async=true .