【问题标题】:Cant access Javascript multidimensional array无法访问 Javascript 多维数组
【发布时间】:2023-04-01 15:25:01
【问题描述】:

我在这里看到了很多这样的问题,但似乎没有一个能解决我的问题。我有一个通过查询填充的多维(嵌套)数组。我希望通过 AJAX jQuery 发送最终数组:

(function() {
    var orderDetails = [];
    orderDetails['retailer'] = [];
    orderDetails['order'] = [];

    db.transaction(function(qry){
        qry.executeSql("SELECT * FROM retailers WHERE pending = '1' ", [], function(tx, results){
            len = results.rows.length; //if rows.length, means retailer is pending so add details to array. If no length, means retailer exists
            for (var i=0; i<len; i++){ 
                console.log('start '+i+' loop in retailers qry');
                orderDetails['retailer'][i] = [];
                orderDetails['retailer'][i]['localID'] = results.rows.item(i).ID;
                orderDetails['retailer'][i]['retailerName'] = results.rows.item(i).retailerName;
                orderDetails['retailer'][i]['address'] = results.rows.item(i).address;
                orderDetails['retailer'][i]['postcode'] = results.rows.item(i).postcode;
                console.log('finish '+i+' loop in retailers qry');
            }               
        }, function(err){console.log(err)})     
    }

这是我填充数组的方式,这里是 AJAX 请求:

        function(){
            console.log('start orders qry success callback');
            //alert(orderDetails['retailer'][0]['localID']);
            var st = JSON.stringify(orderDetails['retailer']);
            console.log(st);


            $.ajax({//send retailer to server, bring back the ID of the retailer as it is on the server so we can insert it into the order
                type: "POST",
                cache: false,
                //async: false,
                url: "https://www.......processOrder.php",
                data: { orderType: 'saved', orderDetails: st},
                dataType: "json",
                success: function(result){

                } 
            })
        });

当我在 ajax 请求之前记录上述内容时,它返回 [[],[],[],[],[],[],[],[],[],[],[]],所以我知道有些东西正在工作,我只是认为对象的全部内容将在服务器端可见。

我还把整个东西包装在一个匿名函数中,因为我认为这有助于数组变量的作用域。

【问题讨论】:

  • 您正在使用 PHP 关联数组语法和 JavaScript 数组。它们不一样。 PHP 关联数组大致等于 JavaScript 对象。您需要将一些[] 更改为{}
  • 您的数据将作为 POST 数据发送到服务器(即&amp;param=value 格式)。使用console.log($.param(st)) 查看您的服务器将如何接收数据。

标签: javascript jquery ajax multidimensional-array


【解决方案1】:

把这个
orderDetails['retailer'][i] = [];
改成这个
orderDetails['retailer'][i] = {};

如果您的 item 不是您想使用参数 i 调用的函数,请像这样访问它:results.rows.item[i].ID

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 1970-01-01
    相关资源
    最近更新 更多