1

特定のIDを持つjsonオブジェクトをdivに出力する方法を知りたいですか?! 私のjsonファイルは(短縮された)このように見え、私が使用するウェブショッププログラムによって自動的に生成されます:

 "shipping":{
   "methods":{
     "core|13490|40699":{
       "id":"core|13490|40699",
       "price":{
         "price_excl":"0.0000","price_incl":"0.0000"
       }
     },
     "core|10292|40695":{
       "id":"core|10292|40695",
       "price":{
         "price_excl":"21.0084","price_incl":"25.0000"
       }
     }
   }
 },

そして私のスクリプトは次のようになります:

        window.onload = function(){
      $.getJSON('http://shop.com/cart/?format=json', function(data){
        $.each(data.cart.shipping.methods, function(index, method){
          $('<span></span>')
            .html('<strong>' + method.price.price_incl + '</strong>')
            .appendTo('.cart-shipping');
        });
      });
    };

私がアーカイブしようとしているのは、ID「core|10292|40695」の配送方法の配送価格のみが表示されていることです。コードを使用すると、両方の送料が表示されます。さらに、これらの価格を 25.000 ではなく「実際の」価格にフォーマットする方法を知りたいです。

おそらくご覧のとおり、私はJSON、jquery/ajaxにかなり慣れていませんが、喜んで学びます。上記はこのサイトを検索してアーカイブしましたが、私の質問は私が本当に理解できないものです.

4

3 に答える 3

1

あなたがしたいことは、次のブロックを置き換えることです:

$.each(data.cart.shipping.methods, function(index, method){
  $('<span></span>').html('<strong>' + method.price.price_incl + '</strong>').appendTo('.cart-shipping');
});

と:

$('<span></span>').html('<strong>' + data.cart.shipping.methods['core|10292|40695'].price.price_incl + '</strong>').appendTo('.cart-shipping');

基本的に、元のコードは $.each コンストラクトを使用して受信データを反復処理しています。あなたの場合、すべての値を繰り返し処理する必要はありません。必要な値はすでにわかっています。

また、if ステートメントの使用を示唆する回答にも注意してください。これらの回答は、オブジェクト全体を繰り返し処理し、リソースを浪費します。

于 2012-05-28T02:10:52.293 に答える
1

単純な if ステートメントを使用してみましたか? 例えば:

if (index == "core|10292|40695") {
    $('<span></span>').html('<strong>' + method.price.price_incl + '</strong>').appendTo('.cart-shipping');
}

通貨のフォーマットに関しては、利用可能な情報がたくさんあると思います

于 2012-05-28T01:57:07.150 に答える
-1

$('<span></span>').html("whatever")そのようなデータを含むスパンを作成しますが、スパンはまだページに表示されていません。

ページにコンテナを配置して、そこにデータを挿入してみてください。

例えば。

html: <div id="a"></div>

js: <script>$('#a').html('test');</script>

于 2012-05-28T01:57:44.280 に答える