我试图弄清楚如何使用jQuery循环JSON并输出一个特定的列。
以下是我的数据库中的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个帐户名。
任何帮助都会很棒。
谢谢!
答案 0 :(得分: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
}
}
答案 1 :(得分:1)
我建议让你的JSON看起来像这样:
{"COLUMNS":
[{
"ACCOUNTID": 1,
"ACCOUNTNAME": "ZooLoo Inc",
"ADDRESS1": "123 ...",
"ADDRESS2": "Orlando"
},
{
"ACCOUNTID" 2,
...
}]
}
使用这种格式会使帐户名称像data.COLUMNS.ACCOUNTNAME
一样简单,而不是复杂的数组/循环系列。
答案 2 :(得分: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>');
}