1

我的问题是 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 个对象是“未定义的”,但我只想要那些在 json 文件中的对象,因为 firefox 不接受未定义的标签。

4

4 回答 4

0
       for ( var i = 0; i < data.length; i++ ) {
           var app = data[ i ];
           content += '<li>'+app.name+'</li>';
       }
于 2012-07-13T09:30:23.597 回答
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继承的其他属性。

于 2012-07-13T09:34:20.847 回答
0

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

$.each( data, function( d ) {
    content += '<li>' + d.name + '</li>';
});
于 2012-07-13T10:03:51.433 回答
0

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

更正 JSON>>

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

于 2012-07-13T09:40:31.270 回答