2011-12-16 2 views
0

jQueryを使用してJSONをループ処理し、特定の列だけを出力する方法を解明しようとしています。ここでこのJSONからACCOUNTNAMEを取得するにはどうすればよいですか?

は私のデータベースのプルからの私のJSONレスポンスです:ここで

{"COLUMNS":["ACCOUNTID","ACCOUNTNAME","ADDRESS1","ADDRESS2"],"DATA":[[1,"ZooLoo Inc","123 ELm St","Orlando"],[2,"Go Company Inc","567 ELm St","Orlando"],[3,"House Inc","4232 Main St","Orlando"]]} 

は、私が使用しようとしていますjQueryのコードです:

function showResponse(data){ 

     $.each(data.COLUMNS, function(i, item){ 

      if (item == 'ACCOUNTNAME') { 

       $("#alertBox").append(data.DATA + " "); 

      } 

     }); 

私の目標は、単にアカウント名を取得することですそれを出力します。私はループのバリエーションを演奏してきましたが、アカウント名を教えてもらう方法を理解できません。 3つのアカウント名を出力したいだけです。

これについての助力は素晴らしいことです。

ありがとうございます!

+1

私には十分に見えます...どうしていませんか? http://jsfiddle.net/mattball/sQH7s/ –

+1

あなたのJSONは少し奇妙です。あなたは名前の配列を持っていて、さらにデータの配列を格納する別のオブジェクトを持っています...それは正しいのですか?私はおそらくあなたの問題だと思う。場合によっては、JSONの再構築を検討する必要があります。 – Seth

答えて

1

他の投稿で既に提案されているように、JSON(配列インデクサー経由でアクセスする代わりにitem.ACCOUNTNAME)を使いやすくするために、出力を少し再編成するほうがよいでしょう。

Aepheusでは、これを行うためにjQueryが必要ないことは間違いありません。ただし、jQueryの使用をご希望の場合は、jsFiddle

var dataCol = -1; 
$.each(data.COLUMNS, function(i, item) { 
    if (item == 'ACCOUNTNAME') { 
     dataCol = i; 
     return false; 
    } 
}); 
if (dataCol != -1) { 
    $.each(data.DATA, function(i, item){ 
     //item[dataCol] should be Account Name. Do what you want with it. 
     //I chose to append it to a list. 
     $("#alertBox").append('<li>' + item[dataCol] + '</li>');  
    }); 
} else { 
    $("#alertBox").append('<li>No accounts</li>'); 
} 
+0

助けてくれてありがとう。私はjQueryでそれを保つ必要があり、これはうまくいった。 – Sequenzia

3

jQueryをスキップすると、このために必要ありません。

function showResponse(data){ 
    //if you don't know the index of account name: 
    var nNameIndex = -1; 
    //you may be able to replace this loop with 
    //nNameIndex = data["COLUMNS"].indexOf("ACCOUNTNAME"); 
    //but I'm not sure how browser compatible that is, and how compatible you need to be. 
    for(var nI = 0; nI < data["COLUMNS"].length; nI++){ 
     if(data["COLUMNS"][nI] == "ACCOUNTNAME"){ 
      nNameIndex = nI; 
      break; 
     } 
    } 
    if(nNameIndex != -1) 
     for(var nI = 0; nI < data["DATA"].length; nI++){ 
      //data["DATA"][nI] -- this is the array of values 
      alert(data["DATA"][nI][nNameIndex]);//second column of array, account name 
     } 
} 
+0

助けてくれてありがとう。それは理にかなっている。 – Sequenzia

1

私はあなたのJSONは次のように見せることを示唆している:

{"COLUMNS": 
    [{ 
     "ACCOUNTID": 1, 
     "ACCOUNTNAME": "ZooLoo Inc", 
     "ADDRESS1": "123 ...", 
     "ADDRESS2": "Orlando" 
    }, 
    { 
     "ACCOUNTID" 2, 
     ... 
    }] 
} 

このフォーマットを使用してdata.COLUMNS.ACCOUNTNAMEとしてではなく配列/ループの複雑な一連のような単純なアカウント名をつかんなるだろう。

関連する問題