Jquery 向webservice发送多个ajax请求
我有几行代码向wcf发送多个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;
$(".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”?这是一个修复方案,但却是最糟糕的方案