Jquery 向webservice发送多个ajax请求

Jquery 向webservice发送多个ajax请求,jquery,asp.net,ajax,wcf,Jquery,Asp.net,Ajax,Wcf,我有几行代码向wcf发送多个ajax请求 $(".cWarpO").each(function () { if ($(this).find(".newId").length > 0) { counter++; var Mapping = new Array(); Mapping[0] = counter;

我有几行代码向wcf发送多个ajax请求

$(".cWarpO").each(function () {

                  if ($(this).find(".newId").length > 0) {
                        counter++;

                        var Mapping = new Array();
                        Mapping[0] = counter;
                        Mapping[1] = $(this).find(".idN").html(); //new id
                        Mapping[2] = $(this).find(".idO").html();
                        Mapping[3] = newCourseId;
                        Mapping[4] = courseOldId;
                        Mapping[5] = isGenric;
                        Mapping[6] = oldGenricCourse;

                        $.ajax({
                            url: "/WebServices/general.svc/mappingCourses",
                            type: "POST",
                            data: JSON.stringify({ Mapping: Mapping }),
                            dataType: "json",
                            contentType: "application/json; charset=utf-8",
                            success: function (data) {



                            }
                        });


                    }

                });
webservice操作正在更新数据库。 由于jquery ajax的工作是不同步的,因此它发送的服务器多路径请求以错误结尾:“尝试对非套接字的对象执行操作”

我认为这是因为数据库每次都试图打开新的连接

知道如何以同步方式在阵列上循环吗

谢谢


Baaroz

与其同步执行,否则可能会锁定客户端浏览器(请参阅),为什么不使用递归发送请求-即在请求完成时发送下一个请求:

var mapCourse = function($ele, index) {
    if(index < $ele.length) {
            //stuff
            $.ajax({
                url: "/WebServices/general.svc/mappingCourses",
                type: "POST",
                data: JSON.stringify({ Mapping: Mapping }),
                dataType: "json",
                contentType: "application/json; charset=utf-8",//you don't need to set this
                success: function (data) {
                    //stuff

                    mapCourse($ele, index + 1);
                }
            });
        }
    }
}

mapCourse($(".cWarpO"), 0);
var-mapCourse=function($ele,index){
如果(索引<$ele.length){
//东西
$.ajax({
url:“/WebServices/general.svc/mappingCourses”,
类型:“POST”,
数据:JSON.stringify({Mapping:Mapping}),
数据类型:“json”,
contentType:“application/json;charset=utf-8”//您不需要设置这个
成功:功能(数据){
//东西
地图课程($ele,索引+1);
}
});
}
}
}
地图课程($(“.cWarpO”),0;

您应该重新考虑只使用一个ajax请求发送所有数据的逻辑,可能会在jQueryAjax中添加“async:false”?这是一个修复方案,但却是最糟糕的方案