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 文件未加载或显示警报

4

1 回答 1

7

由于您在回调函数中将其声明为var output,因此该output变量是该回调函数的本地变量,并且在循环完成后消失。即使不是这种情况,使用=运算符也意味着您在每次迭代时都会覆盖先前的值。

试试这个:

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 回答