2016-10-13 2 views
0

配列内の両方の値にアクセスするのに苦労しています。私が間違っていることは確信していません。基本的には、両方の画像を出力してページに表示するだけです。誰かが私にこれを助けることを願っています。以下は私のコードです:

(function() { 
 
\t 
 
\t 'use strict'; 
 

 
    \t var url = 'path to json'; 
 
    
 
    $.getJSON(url, function(json) { 
 
     
 
     //store json data into variable 
 
\t  var data = (json); 
 
\t 
 
\t \t //store data in empty string 
 
\t \t var images = ''; 
 
\t 
 
\t \t //retrieve values from json file 
 
\t \t $.each(data, function (i, item) { 
 
\t \t \t images += '<img src="' + item[i].imageURL + '">'; 
 
\t  }); 
 
\t \t 
 
\t \t //append results to div 
 
\t 
 
\t \t $('#images').html(images); 
 
\t \t 
 
    }); 
 
\t 
 
})();

+1

を、なぜあなたはループが必要なのですか? 'data [1] .category'、' data [0] .imageURL' –

+0

jsonファイルのミニバージョンです.300 +サブアレイのようになります。 – Tom

+0

この場合はループが必要です。私はそれを把握できません。ループでdata [0]を実行すると、最初の配列イメージしか取得されません。私は両方にアクセスして、両方をループして印刷できるようにしたい。ご協力いただきありがとうございます! – Tom

答えて

0

イメージパスを含む可能性のあるフィールドが2つあるので、正しいものを選択してください。また、ネストされた配列はlength=1を持っているのでitem[0]を使用します。このような単純な配列のための

(function() { 
 
    'use strict'; 
 

 
    var url = 'path to json'; 
 

 
    $.getJSON(url, function(json) { 
 

 
    //store json data into variable 
 
    var data = (json); 
 

 
    //store data in empty string 
 
    var images = ''; 
 

 
    //retrieve values from json file 
 
    $.each(data, function(i, item) { 
 
     images += '<img src="' + (item[0].imageURL || item[0].category) + '">'; 
 
    }); 
 

 
    //append results to div 
 

 
    $('#images').html(images); 
 
    }); 
 
})();

+0

私はまず何をしようとしていましたか。何らかの理由で画像が空白になってしまいます。他の実施例のために、私は$ .eachを使用しなければならなかった(データは[0]などapproriateアレイにアクセスする – Tom

+0

[ [ { "imageURLに": "画像のパス"、 } ]、 [ { " "カテゴリ": "画像へのパス"、 } ] ] – Tom

+0

@Tomデータ構造を見て、画像を追加する方法を示すために私の答えを更新しました。 – tcooc

0

あなたはthis.Youような何かを行うことができますが、私次のコードスニペットをチェック

var img=[ 
 
    [ 
 
     { 
 
      "imageURL":"path to image", 
 
     } 
 
    ], 
 
    [ 
 
     { 
 
      "category":"path to image", 
 
     } 
 
    ] 
 
]; 
 
$.each(img, function (i, item) { 
 
    alert(item[i].imageURL) 
 
var images = '<img src="' + item[i].imageURL + '">'; 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

てコンテンツにアクセスするために不足しています
+0

私は上記の私の更新されたコードを持っていますが、私はまだdoesntが私のために働きたい理由を知っていません。 – Tom

+0

配列の1つにimageUrlがあり、別の配列にはそれがありません...そのアクセシビリティをチェックし、それを使用する必要があります。 – Geeky

+0

他のカテゴリもimageURLと言っています。私はちょうどうんざりしました。上記の例のtcoocは私の問題を解決しました – Tom

0

あなたのjsonは悪いとは思いますが...

var ri = [ 
    [ 
     { 
      "imageURL":"path to image", 
     } 
    ], 
    [ 
     { 
      "category":"path to image", 
     } 
    ] 
]; 
$(ri).each(function(i, n){ 
    if('imageURL' in n[i]){ 
    console.log(n[i]['imageURL']); 
    } 
}); 
関連する問題