0

我是 Javascript/jQuery 的初学者,我正在开发一个用 KnockoutJS 制作的界面,所以我有几个模型。我想将所有数据保存在数据库中,但我不知道该怎么做。

我从:

   self.save = function() {
        var data = ko.toJS(self);
        var test = ko.toJSON(self);
        console.log(test);
    }

   $.ajax({
       url: "myURL",
       data: {'carrier': data.carrier},
       type: "POST",
   });

这是 console.log 的结果:

   {"id":1,"carrier":"1","Settings":[{"id":1,"price":{"id":1,"DeliveryStandard":"3.00","DeliveryExpress":"6.00","Details":{"id":1,"Standard":[{"id":1,"fromPrice":0,"maxPrice":"45.000"}],"Express"[{"id":1,"fromPrice":0,"maxPrice":"66.000"}]}}}}]}

我可以通过使用 data.carrier 来获取运营商的价值,但我不知道如何获取其他数据,例如 DeiveryStandard、DeliveryExpress、fromPrice、maxPrice ...

你有想法吗?

提前谢谢你,如果我的问题很愚蠢,对不起!

4

3 回答 3

3

如果您将 JSON 格式化为更易读的格式,并带有缩进,它会更容易理解:

(虽然应该注意的是,它在技术上只是字符串格式的 JSON,除此之外它只是一个标准的 javascript 对象)

{
"id":1,
"carrier":"1",
"Settings":[
    {
    "id":1,
    "price": { "id":1,
               "DeliveryStandard":"3.00",
               "DeliveryExpress":"6.00",
               "Details": { "id":1,
                            "Standard": [{"id":1,
                                          "fromPrice":0,
                                          "maxPrice":"45.000"
                                          }],
                            "Express" //Missing semi-colon
                                     [{"id":1,
                                        "fromPrice":0,
                                        "maxPrice":"66.000"
                                      }]
                          }
             }
   }}//One too many closing braces
   ]
}

首先要注意的是您有 2 个语法错误,上面用注释突出显示。所以先修复它们!(虽然我想知道它们是否是拼写错误,因为你似乎让它在你的最后工作)


然后我们可以查看结构树来确定您想要的值在哪里......

DeiveryStandardDeliveryExpress都是分配给 的对象price的属性,它是Settings数组中第一项的属性。所以你可以像这样访问它们:

var DeliveryStandard = data.Settings[0].price.DeliveryStandard;
var DeliveryExpress= data.Settings[0].price.DeliveryExpress;

fromPrice并且在和项目maxPrice中多次被发现。所以你需要决定你需要什么版本。如果需要,您可以像这样获取数组的第一项:StandardExpressStandardStandard

var standardObject = data.Settings[0].price.Details.Standard[0];

然后您可以访问以下属性:

var fromPrice = standardObject.fromPrice;
var maxPrice = standardObject.maxPrice;

我相信您可以弄清楚如何获取Express相同数据的版本!


从您似乎能够自己解决的情况来看,我认为您的问题是不知道如何处理数组。请注意,数组是用方括号定义的[],并且数组中的元素应该使用从零开始的索引来访问,例如:array[0]对于第一个元素,array[1]对于第二个元素。

于 2013-11-14T14:39:09.180 回答
0

修复了 JSON 中的一些错误


var j = {
    "id" : 1,
    "carrier" : "1",
    "Settings" : [{
            "id" : 1,
            "price" : {
                "id" : 1,
                "DeliveryStandard" : "3.00",
                "DeliveryExpress" : "6.00",
                "Details" : {
                    "id" : 1,
                    "Standard" : [
                        {
                            "id" : 1,
                            "fromPrice" : 0,
                            "maxPrice" : "45.000"
                        }
                    ],
                    "Express": [
                        {
                            "id" : 1,
                            "fromPrice" : 0,
                            "maxPrice" : "66.000"
                        }
                    ]
                }
            }
        }
    ]
};

alert(j.Settings[0].price.DeliveryStandard);
alert(j.Settings[0].price.DeliveryExpress);
alert(j.Settings[0].price.Details.Standard[0].fromPrice);
alert(j.Settings[0].price.Details.Standard[0].maxPrice);
于 2013-11-14T14:47:47.973 回答
0

这应该有效。

console.log(data.Settings[0].price.DeliveryStandard);
于 2013-11-14T14:39:33.240 回答