2013-12-22 69 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