2013-12-22 67 views
0

我试图从MySQL数据库中解析出一些JSON结果到一个简单的HTML表格中。目前,我可以正确返回原始JSON字符串data。但是,当我尝试将这些结果解析为HTML表格时,我返回'Undefined'。在JQuery中解析MySQL JSON结果

JS文件:

$('input#name-submit').on('click', function() { 
var name = $('input#name').val(); 
if ($.trim(name) != '') { 
$.post('ajax/name.php', {name: name}, function(data) { 
var tr; 
    for (var i = 0; i < data.length; i++) { 
     tr = $('<tr/>'); 
     tr.append("<td>" + data[i].ARTIST + "</td>"); 
     tr.append("<td>" + data[i].LOCATION + "</td>"); 
     $('table').append(tr); 
     } 
}); 
} 

}); 

从HTML文件表:

<table> 
<tr> 
    <th>ARTIST</th> 
    <th>LOCATION</th> 
</tr> 
</table> 

编辑:

的JSON结果,返回为 '未定义'我的索引文件

{"ARTIST":"Katy Perry","LOCATION":"United States"}

+0

关于表格HTML ...第一部分应包含在元素中,而不是。然后,为内容。 – JAL

+0

Offtopic,但这可能会对你有意思:http://handlebarsjs.com/ – Ties

回答

4

jQuery是智能有关确定基于很多因素Ajax请求的返回类型。在这种情况下,我几乎肯定data已经被解析。如果您删除sentdata行,而只是使用data,您的代码应该按照您的意图工作。

dataType property for ajax for jQuery

+0

啊,是的,我认为这条线可能会过剩的要求。我已经删除了它,但是,我现在只能从每列中的JSON中返回一个'undefined'结果。 – Byate

+0

@Byate是否检查过您在Firebug/Web Inspector/F12工具中的Ajax请求的返回? – JAL

+0

我检查过Firebug,并且JSON在检查时加载。它将它解析到问题开始的HTML表格中,导致'未定义'结果 – Byate

1

的exammple是在这里:http://jsfiddle.net/nqRk9/2/

如果你的数据是:

tr = $('<tr/>'); 
    tr.append("<td>" + data.ARTIST + "</td>"); 
    tr.append("<td>" + data.LOCATION + "</td>"); 
    $('#single').append(tr); 

{"ARTIST":"Katy Perry","LOCATION":"United States"}

for循环你可能只是这样做不

但如果你有更多的艺术家和地点,这里是你的数据看起来像什么的例子。

{"ARTIST":[["Katy Perry"], ["Artist 2"], ["Artist 3"]],"LOCATION":[["United States"],["Location 2"], ["Location 3"]]}; 

这里是你如何可以访问数据:

for(var i = 0; i < data.ARTIST.length; ++i) 
{ 
     tr = $('<tr/>'); 
     tr.append("<td>" + data.ARTIST[i] + "</td>"); 
     tr.append("<td>" + data.LOCATION[i] + "</td>"); 
     $('#multiple').append(tr); 
} 

我相信你的数组下标是放错了地方,在OP。

+0

谢谢 - 它并没有解决我遇到的特定问题,但这是一个很好的方法,我已经将它调整到我的代码中了。我添加了一个变量var sentdata = JSON.parse(data)就在'for'循环之前,并且将'data'改为'sentdata'。这样就可以根据需要解析数据。 – Byate

+0

好听,快乐编码! – ZZPLKF