JQuery Ajax 问题

Wayne 2017-08-24 06:22:33
现在想实现一个功能,需要在客户端循环调用Ajax处理,因为每一次返回的结果会用于下一次循环,所以把async设置成为了false,但是浏览器就会出现假死,导致无法渲染,不知各位大神有何解决方法。
这样的目的就是为了在每一次循环的时候给一个lable赋值,显示当前正在处理第几条数据。但是由于浏览器假死,最终结果是全部循环完成之后,只在lable里显示最后一次循环的文本信息。


for (var i = 1; i <= 10; i++) {
var lcvid = $("#hidCVID1").val();
var rcvid = $("#hidCVID2").val();
$("#lblP").text("指定10份,正在处理第" + i + "条数据...");
$.ajax({ url: "AjaxHandel/CloseRepeatResHandler.ashx", dataType: "json",
cache: false, timeout: 100000, async: false,
success: function(v) {
if (v.code == "0") {
alert(v.msg);
return;
} else if (v.code == "1") {
$("#hidCVID2").val(v.rcvid);
$("#hidCVID1").val(v.lcvid);
}
}
});
}
...全文
142 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wayne 2017-08-24
  • 打赏
  • 举报
回复
谢谢,搞定。。。
  • 打赏
  • 举报
回复
改异步,在回调里面发送下一次请求


    function requestAjax(lcvid, rcvid, i,max) {
        $("#lblP").text("指定" + max + "份,正在处理第" + i + "条数据...");
        $.ajax({
            url: "AjaxHandel/CloseRepeatResHandler.ashx",
            dataType: "json",
            cache: false,
            timeout: 100000,
            success: function (v) {
                if (v.code == "0") {
                    alert(v.msg);
                    return;
                } else if (v.code == "1") {
                    $("#hidCVID2").val(v.rcvid);
                    $("#hidCVID1").val(v.lcvid);
                    i++;
                  if(i<=max)  requestAjax(v.rcvid, v.lcvid, i, max);
                }
            }, error: function () {//出错继续用原来的值请求

                i++;//如果出错继续重试,而不是处理吓一跳注释掉i++
                if (i <= max) requestAjax(lcvid, rcvid, i, max);
            }
        });
    }

    requestAjax($("#hidCVID1").val(), $("#hidCVID2").val(),1, 10);


Web开发学习资料推荐
javascript解码读取二维码信息
extjs开发技巧

87,994

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧