getJSON的Jquery问题

时间:2012-07-13 09:27:09

标签: javascript jquery json

我的问题是一个javascript问题,我尝试用Jquery的$ .getJson函数解析一个Json文件,当我把它们分别放在一个变量中时,我注意到它需要更多的对象我想,这里是代码JS :

$.getJSON(
url,
function(data) {
   var content = '<h1>Applications</h1>';
   content += '<ul>';
       for (var pos in data){
           var app = data[pos];
           content += '<li>'+app.name+'</li>';
       }
   content += '</ul>';
   $('div.apps').html(content);
}

这里是json文件:

[
 {
    "name": "apidocs",
    "staging": {
        "model": "rack",
        "stack": "ruby18"
 }
 ,
 {
    "name": "apidocs2",
    "staging": {
        "model": "rack",
        "stack": "php53"
 }
 ,
 {
    "name": "apidocs3",
    "staging": {
        "model": "rack",
        "stack": "java17"
 }
]

那么,在我的html页面中,我有全局6个对象而不是3个。最后3个是&#34;未定义&#34;但我只想要那些在json文件中,因为firefox不接受未定义的标签。

4 个答案:

答案 0 :(得分:0)

       for ( var i = 0; i < data.length; i++ ) {
           var app = data[ i ];
           content += '<li>'+app.name+'</li>';
       }

答案 1 :(得分:0)

避免 for..in循环。

for (var pos in data){

用通常的替换它:

for (var i=0; i<data.length; i++){ //use as data[i]

如果您正在使用for..in循环,请务必在使用之前使用data.hasOwnProperty(..)。否则,您将获得比预期更多的对象。它们实际上是data继承的其他属性。

答案 2 :(得分:0)

更正JSON,你有太多的开始标记。

<强> Corrected JSON>>

另外,更正for循环。使用var count = 0; count < data.length; count++

答案 3 :(得分:0)

由于您使用的是jQuery,请使用其完美的$.each函数。

$.each( data, function( d ) {
    content += '<li>' + d.name + '</li>';
});