【问题标题】:How to arrange results of a for each function into an array in javascript如何将每个函数的结果排列到javascript中的数组中
【发布时间】:2025-12-11 01:45:01
【问题描述】:

我有从具有多个同名值的表单中获取的数据。在使用 ajax 将其发送到 url 之前,我想在发布之前将其排列在数组中。对于所有五个不同的输入字段,我基本上得到了如下这些值。当我使用 .Push 函数实现这个时,我收到一个错误,“Uncaught TypeError: dArray.push is not a function”

            var g =  document.getElementsByName("dataA[]"); //equals 1, 11, 111

            var dArray = [];
            var eArray = [];
            var fArray = [];
            var gArray = [];
            var hArray = [];
            
    for(var i=0;i<g.length;i++){
            dArray = d[i].value;
            eArray = e[i].value;
            fArray = f[i].value;
            gArray = g[i].value;
            hArray = h[i].value;
            
            //alert(dArray); Alerts 3 times, 1, 11, then 111
            
            //I keep receiving "Uncaught TypeError: dArray.push is not a function" Error
            dArray.push(d[i].value);  //Desired [1,11,111]
            eArray.push(e[i].value);
            fArray.push(f[i].value);
            gArray.push(g[i].value);
            hArray.push(g[i].value);
            }
            
            var dArrayb = JSON.stringify(dArray);   //Desired ["1","11","111"]
            var eArrayb = JSON.stringify(eArray);
            var fArrayb = JSON.stringify(fArray);
            var gArrayb = JSON.stringify(gArray);
            var hArrayb = JSON.stringify(hArray);

            
            var dataArray = "DataD="+ dArrayb +"&DataE="+ eArrayb +"&DataF="+ fArrayb +"&DataG="+ gArrayb +"&DataH="+ hArrayb +"";
            alert(dataArray);
            

期望的结果

            var dataArray = DataD="["1","11","111"]"&DataE="["2","22","222"]"&DataF="["3","33","333"]"&DataG="["4","44","444"]"&DataH="["5","55","55"]"
                    

Ajax 发送

    $.ajax({
    type: "POST",
    url: "SaveData.php",
    data: dataArray,
    dataType: 'json', 
    async: false,
    crossDomain: true,
    cache: false,
    
    success: function (output){ 
    alert(output);
    } //success response
    
    }); //Close $.ajax  

【问题讨论】:

  • 您在循环的第一行重新分配了dArray,这使它成为d[i].value 的类型。显然这不是一个数组,所以你不能向它推送任何东西......

标签: javascript arrays ajax


【解决方案1】:

您收到错误消息是因为您将原本应该属于数组类型的相同变量重新分配给循环内的值 您必须选择不同的变量名称

dArray = d[i].value;
            eArr = e[i].value;
            fArr = f[i].value;
            gArr = g[i].value;
            hArr = h[i].value;


dArray.push(d[i].value);  //Desired [1,11,111]
            eArray.push(eArr);
            fArray.push(fArr);
            gArray.push(gArr);
            hArray.push(hArr);

【讨论】: