0

我试图使用 json 来存储页面中的一些值,然后稍后在 php 文件中访问这些值/变量。现在的问题是,我一般是 json 和 javascript 的新手,我努力了几个小时来找到一个问题的解决方案,对于有这方面经验的人来说,这个问题可能非常简单:现在我有了这个:

var invoice_data = {

"client":[
{
    "client-name" : "",
    "client-address" : "",
    "client-address-2" : "",
    "client-city-state" : "",
        "client-country" : ""
}
],

"shoppingcart":[ 
    {
    "1" : {"item-name":"", "qty":"", "price":"", "discount":"", "subtotal":""}
    }
],

};

所以这个继承的东西我并没有真正得到。因此,正如我创建了“客户”对象并创建了“购物车”一样,现在的问题是,当用户订购的商品超过一个项目时,应该创建另一个子对象来存储它的详细信息。所以我假设如下:

"shoppingcart":[ 

    {   
    "1" : { "item-name":"", "price":"", "discount":"" }
    "2" : { "item-name":"", "price":"", "discount":"" }
    }
],

所以当我 console.log(invoice_data.shoppingcart); 我得到“shoppingcart”对象,但我无法访问 invoice_data.shoppingcart.1 或 invoice_data.shoppingcart.2,有什么方法可以像访问 invoice_data.shoppingcart 或 invoice_data.client 一样访问 1 或 2 个子对象?

谢谢你。

编辑:我可以将它作为一个数组访问,我对该选项不感兴趣。理想情况下,我想通过它的名称访问子对象。

4

3 回答 3

1

删除数组语法:

改变这个:

"client":[
{
    "client-name" : "",
    "client-address" : "",
    "client-address-2" : "",
    "client-city-state" : "",
    "client-country" : ""
}
]

对此:

"client": {
    "client-name" : "",
    "client-address" : "",
    "client-address-2" : "",
    "client-city-state" : "",
    "client-country" : ""
}

购物车也是如此。

于 2013-03-12T23:42:39.900 回答
0

您无法访问invoice_data.shoppingcart.1,因为1它不是有效的 Javascript 变量名。如果对象的键不是有效的变量名,则必须使用数组表示法:invoice_data.shoppingcart[1]

编辑:我没有看到它,但正如马特指出的那样,您也必须删除数组语法。

于 2013-03-12T23:41:53.020 回答
0

您的 shopping_cart 是一个数组。

你不想要:

shopping_cart : {
    1 : { name : "...", price : "..." },
    2 : { ... }
}

你要:

shopping_cart : [
    { name : "..." },
    { ... }
]

然后您可以通过以下方式访问它:

shopping_cart[0].name;
shopping_cart[0].price;

等等。

数组也是从 0 而不是 1 开始的。这不是继承:它只是事物的集合。

于 2013-03-12T23:45:37.203 回答