繁体   English   中英

将ajax放入jquery的for语句中

[英]Put an ajax in a for statement in jquery

我想在php for循环语句中调用jquery ajax。 我的代码是这样的:

 for(i=0;i<selectedStudents.length;i++){
                   console.log(selectedStudents[i]);
                    var userId=selectedStudents[i][13];
                  console.log(userId);
                   console.log(i);

                    $.ajax({
                        type: "POST",
                        url: "http://10.10.212.50:8080/.../member/add",
                        contentType: 'application/json',
                        data: '{"requester": { "userName": "' + AdminUsername + '", "password": "' + AdminPass + '" },"request":{"taskId": ' + taskId + ',"userId":' + userId + '}  }',
                        dataType: "json",
                        success: function (GetResult) {
                             console.log(GetResult);

                            if (GetResult.result) {
                                swal("تمام", "افزودن کاربر به گروه کاری، با موفقیت انجام شد!!.", "success")

                                console.log(i);
                                console.log(selectedStudents);

                                var memberString='<li style="background-color: #39CCCC;border-color: #0c0c0c; " class="list-group-item row">'+
                                        '<div class="row">'+
                                        '<h4 class="col-md-9" style=" text-align:center; vertical-align:middle;">'+selectedStudents[i][1]+'" " '+selectedStudents[i][2]+'</h4>'+

                                        '<div class="col-md-3">'+
                                        '<img class="img-responsive" src="'+selectedStudents[i][0]+'">'+
                                        '</div>'+
                                        '<input id="'+userId+'firstName" type="text" style="display:none" value="'+selectedStudents[i][1]+'">'+
               '</div>'+
                                        ' </li>';
                                $("#"+taskId+"hiddenMemberLI").after(memberString);

                            } else {
                                sweetAlert("خطا", "افزودن کاربر به گروه کاری، با مشکل رو به رو شده است!!", "error");
                            }
                        },
                        error: function (xhr, ajaxOptions, thrownError) {
                            alert(xhr.status);
                            alert(thrownError);
                        }
                    })//end ajax
                }//end for

当我看到console.log()s的结果时,我首先看到所有的for循环,然后运行ajax。 这意味着当代码要运行时,例如selectedStudents[i][0] i超出范围。

我必须再叫ajax。 我该怎么办?

您需要将$ .ajax与async:false选项一起使用

$.ajax({
   type: "POST",
   url: "http://10.10.212.50:8080/.../member/add",
   contentType: 'application/json',
   data: '{"requester": { "userName": "' + AdminUsername + '", "password": "' + AdminPass + '" },"request":{"taskId": ' + taskId + ',"userId":' + userId + '}  }',
   dataType: "json",
   async: false,
   success: function (GetResult) {  
       //your logic
   }
});

AJAX是异步操作,因为它不知道服务器何时响应该请求。 这就是为什么它返回一个Promise的原因,它需要在代码中处理。

For循环同时触发n个AJAX请求并完成,并且不等待请求完成。 如果要一个接一个地运行请求,请在success回调中执行该请求,或者更有效地实施一个.done promise处理程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM