一开始请求数据我写成
var rows=[{name:"1"},{name:"2"},{name:"3"}] ;
$.eatch(rows,function(id,value){
$.ajax({
url: "@Url.Action("DirectShipment")",
type: "Post",
cache: false,
headers: headers,
data: {
"indexs": indexs,
},
dataType: "json",
success: function (data) {
console.log(data);
}
});
})
理想的结果是:
data
data
data
实际的打印结果:
data
原因
因这样写导致数据异步请求,再加上ajax使用的 var 声明变量,没有闭包,也没有局部变量的限制,导致请求后面的失败,我循环了三次,后台只接受了一次
解决方法
let rows=[{name:"1"},{name:"2"},{name:"3"}] ;
for(let i=0;i<rows.length,i++){
$.ajax({
url: "@Url.Action("DirectShipment")",
type: "Post",
cache: false,
headers: headers,
async: false,
data: {
"indexs": indexs,
},
dataType: "json",
success: function (data) {
console.log(data);
}
});
}
//声明变量使用let ,加上 async:false
打印结果:
data
data
data