3

したがって、テキストと画像を個別にかなりうまくロードするjsonファイルがあります。これは、機能するかどうかをテストするために行ったことの簡単な例です。

  outputc+="<li>"
  outputc+=this.name+" "+this.price+"</li>";
  $('#featured').append(outputc);
  $("<img/>").attr('src',this.images).appendTo('#featured');

上記のコードを使用すると完全に機能しますが、これらの両方をリストでラップする必要があるため、検索を行ったところ、次のことがわかりました。

$(document).ready(function(){

//loading json file

var url = "shoppingItems.json";

$.getJSON(url,function(json){


    $.each(json.shoppingItem,function()
    {
        var output ='<li><img src= "'+this.images+'" alt ="'+this.name+'"></li>';
    });

    $('.items').append(output);
});
});

上記の jQuery は何も返されません。json ファイルは検証済みであり、単純に警告すればコードが機能するため、何も問題はありません。これは、私が見ることができない出力スクリプトで何か間違ったことをしている可能性があります。

私の JSON ファイルはここにあります: Json file not loading or shown alerts

4

1 に答える 1

7

コールバック関数内で として宣言しているためvar outputoutput変数はそのコールバック関数に対してローカルであり、ループが完了すると消えます。そうでない場合でも、=演算子を使用すると、反復ごとに前の値を上書きしていることになります。

これを試して:

var output = ""; // initialize it outside the loop
$.each(json.shoppingItem,function()
{
    output += '<li><img src= "'+this.images+'" alt ="'+this.name+'"></li>';
});
$('.items').append(output);

http://jsfiddle.net/mblase75/zB5fv/

于 2013-04-04T16:59:22.607 に答える