1、我有一个数组,我要循环通过ajax到后台判断是否符合条件,只要其中一个符合条件,我就打印出“全部符合”,否则打印出“不全符合”
var a = [1, 2, 3, 4];
for(var i = 0; i < a.length; i++){
$.ajax({
type: 'POST',
data: {
fwh: a[i]
},
success: function(data){
//通过后台返回的结果判断这个是否符合条件
}
});
}
2、有没有什么好的处理方法?(后台人员没空,叫我这样循环,额)
建议把数组整体穿到后台判断,而不是循环 ajax 请求,这样请求太多不好。
把数组传到 后台 再整体作处理。
var a = [1, 2, 3, 4];
$.ajax({
type: 'POST',
data: {
fwh: a
},
success: function(data){
//通过后台返回的结果判断这个是否符合条件
}
});
后台代码可以接收到这个参数,做整体的处理。我不知道后台用什么语言哈
var valid=false;
var a=[1,2,3,4];
a.forEach(x=>{
$.post(url,{fwh:x},function(data){
if(符合)
valid=true;
});
});
if(valid) //符合
...
else
...
这个只能说后台不负责任了;这是后台的事,前端success回调并不知道是哪一个结果返回,所以也不能对之前的请求作统一处理;当然你也可以在请求时加在一个ID号,结果返回时叫后台加上这个ID号,这样你能根据ID区别是之前的哪个请求,这样就可以处理了。
给出一个标志位,如果全部循环结束之后flag=true就全部正确,如果flag=false就不全正确。
但是如果这样在循环里面不断提交,这个不是会加重服务器的压力么?而且,post的话,我曾经做过一个简易的刷票,发现,post是有时间开销的,而且比get花费时间更长,我有一部分是失败的,因为服务器来不及做处理。
但是这个效率问题我就不清楚了~其实可以把整个数组传过去,让后台帮你判断返回结果吧。
var a = [1, 2, 3, 4];
var flag = true;
for(var i = 0; i < a.length; i++){
$.ajax({
type: 'POST',
data: {
fwh: a[i]
},
success: function(data){
//通过后台返回的结果判断这个是否符合条件
//不符合 false
//符合不改变。
}
});
}
if(flag){
全部正确
}
else{
不全正确
}
要么,跟后台沟通,一次传数据过去,酱最好。
或者,可以用Promise.all().fail()//全不符合
和Promise.race().done()//其中一个符合
把数据一次发到后台,让后台判断.