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 を使用して 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の両方で複数回見つかりStandardます。Expressしたがって、必要なバージョンを決定する必要があります。必要に応じて、次のようStandardに配列の最初の項目を取得できます。Standard

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

次に、次のようなプロパティにアクセスできます。

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

Express同じデータのバージョンを取得する方法を理解できると確信しています!


あなたが自分で解決できたように見えることから、あなたの問題は配列の扱い方がわからないことだと思います。配列は角かっこで定義され[]、配列内の要素はゼロベースのインデックスでアクセスする必要があることに注意してください。たとえばarray[0]、最初の要素とarray[1]2 番目の要素の場合です。

于 2013-11-14T14:39:09.180 に答える
0

これはうまくいくはずです。

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