首页 > ajax遍历问题

ajax遍历问题

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()//其中一个符合


把数据一次发到后台,让后台判断.

【热门文章】
【热门文章】