Jquery issue with getJSON

Jquery issue with getJSON

本文关键字:getJSON with issue Jquery      更新时间:2023-09-26

我的问题是一个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页面中,我在globality中有6个对象,而不是3个。最后3个标记是"未定义的",但我只喜欢json文件中的标记,因为firefox不接受未定义的标记。

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

AVOIDfor..in循环。

for (var pos in data){

用通常的代替

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

如果您正在使用。。在循环中,在使用data.hasOwnProperty(..)之前一定要使用它。否则,您一定会得到比预期更多的对象。它们实际上是data继承的其他属性。

更正JSON,您有太多的打开标记。

更正的JSON>>

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

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

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