如图,我要取到for循环内的所有data

我要把for循环下每个data全部传给ajax,可是我现在每次只能取到最后一个data而已!

             for(var i=0;i<selRow.length;i++){
            var registCode=selRow[i].registCode;
            var formId=selRow[i].formId;
            var data = {'registCode':registCode,'formId':formId};
         } 

              $.ajax({
                type : 'post',
                url : '${ctx}/intr/print/getDetailFee',
                dataType : 'json',
                data : data,
                success : function(data) {
                    var fileName = data.entity.fileName;
                    if (data.success == true) {
                        location.href = "${ctx}/intr/print/downLoadCollectionLineWPdf?fileName="
                                + fileName

                    } else {
                        $.modalAlert(data.message, "error");
                    }
                    $.loading(false);
                }
            })  
        }

https://www.cnblogs.com/sdpdf/p/4322500.html

js没用过,但把变量ajax放入for循环中,那每次循环它都被重新定义,你只能得到最后一次循环的值。

        var registCode=[];
        var formId=[];
        for(var i=0;i<selRow.length;i++){
            registCode.push(selRow[i].registCode);
            formId.push(selRow[i].formId);
        } 
        var data = {'registCode':registCode.join(","),'formId':formId.join(",")};
        $.ajax({
            ..........
        })  

     var data=[]
        for(var i=0;i<selRow.length;i++){
            var registCode=selRow[i].registCode;
            var formId=selRow[i].formId;
            data.push( {'registCode':registCode,'formId':formId})
         } 

              $.ajax({
                type : 'post',
                url : '${ctx}/intr/print/getDetailFee',
                dataType : 'json',
                data :{data: JSON.stringify(data)},

在for循环里去定义data的话每次都是一个新的变量了,结果就是最后一个生效。

       var data = [];
       for(var i=0;i<selRow.length;i++){
            var registCode=selRow[i].registCode;
            var formId=selRow[i].formId;
            data.push({'registCode':registCode,'formId':formId});
         } 

              $.ajax({
                type : 'post',
                url : '${ctx}/intr/print/getDetailFee',
                dataType : 'json',
                data : data,
                success : function(data) {
                    var fileName = data.entity.fileName;
                    if (data.success == true) {
                        location.href = "${ctx}/intr/print/downLoadCollectionLineWPdf?fileName="
                                + fileName

                    } else {
                        $.modalAlert(data.message, "error");
                    }
                    $.loading(false);
                }
            })  
        }

如果你想传所有的数据到ajax,应该把data定义在外面,难道不知道全局变量和局部变量的区别吗?

难道不是应该把ajax也放到for循环中么?

var data=[];
for(var i=0;i<selRow.length;i++){
data.push({'registCode':selRow[i].registCode;,'formId':selRow[i].formId;});
}

你可以把ajax请求封装一个方法,将data传进去,然后在for循环里面调用方法,你要是不想写方法,你可以在for里面用闭包的方法调用ajax,结果都是一样的。-

首先,这个问题是想将data一起传过去还是分别进行传过去呢? 常理来说是一起传,这样减少请求次数,加快页面渲染速度。变量的申明一定要放在循环外面,之后循环往数组中push就可以了,你这样放在循环里面,就意味着每次进入循环的时候,对变量进行了重新申明,故最后你得到只是循环中最后一个了。

定义一个数组,把data放到数组里,ajax传过去数组