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ページには、グローバルに3つではなく6つのオブジェクトがあります。最後の3つは「未定義」ですが、firefoxは未定義のタグを受け入れないため、jsonファイルにあるものだけが欲しいです。

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

JSON を修正してください。開始タグが多すぎます。

修正されたJSON>>

さらに、for ループを修正します。使用するvar count = 0; count < data.length; count++

于 2012-07-13T09:40:31.270 に答える
0

jQueryを使用しているので、その完璧な$.each機能を使用してください。

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