2014-03-28 161 views
2

所以我有一個數據庫,通過一大堆使用PHP回到通過JSON jQuery的數據..我試圖從返回的數據,但沒有運氣訪問各列..jQuery的閱讀JSON數據

我的PHP :

header('Content-Type: application/json'); 
require 'database.php'; 
mysql_query('SET CHARACTER SET utf8'); 
$myjsons = array(); 
$qry = 'SELECT * FROM quotes ORDER BY id'; 
$result = mysql_query($qry); 

while($row = mysql_fetch_assoc($result)){ 
    $myjsons[] = json_encode(array($row)); 
} 
echo $_GET['callback'] . '(' . json_encode($myjsons) . ')'; 

這裏是我的JS:

function getAll(){ 
    jQuery.ajax({ 
     url:'example.com/js/getAll.php', 
     async: true, 
     dataType: 'jsonp', 
     success:function(data){ 
      $('.quoteList').append(data[0]); 
     } 
    }); 
} 

目前該追加以下的元素:

[{"id":"1","text":"The most wasted of all days is one without laughter.","author":"E.E. Cummings","status":"1"}] 

因此,舉例來說,如果我想讓jQuery通過數據[0]到數據[92](最後一個)並將每個作者追加到.quoteList,我怎麼能這樣做呢?我試過數據[0] [1]和數據[0] [作者]

回答

6

您可以使用$.each()循環通過data並追加author

$.each(data, function(i) { 
    $('.quoteList').append(data[i]['author']); 
}); 
+0

它會工作數據[I]但筆者一部分出於某種原因不拾..當我補充說,它什麼都不做。 – pashOCONNOR

+0

你在哪裏添加此代碼?它在'成功:功能(數據){... HERE ...}' – Paul

+0

這就是我插入它的地方。 – pashOCONNOR

0

你需要使用您的數據循環,試試這個

success:function(data){ 
    for (var i in data) { 
     $('.quoteList').append(data[i]); 
    } 
} 
+0

我還沒有聽說過.. – zzlalani

0

這應該工作: (UPD所有代碼:)

+1

不幸的是它返回了一堆「undefined」:( – pashOCONNOR

+0

請嘗試使用$ .ajax這個選項: contentType:「application/json」 – ka3yc

+0

以及如果「data」當屬「串」,你可能需要在JSON解析這個我用[json2.js]:(http://code.ohloh.net/file?fid=6zoZlEsxuWphE-W_4_Psb9cBh9U&cid=IE7HnizPlgE&s=&fp=289108&mp=&projSelected =真#L0)爲這個圖書館: json.parse(數據); // 然後處理數據陣列 – ka3yc

2

PHP可能有缺陷,因爲json_encode被調用兩次,這是不常見的。正如所寫的,這將把行壓扁成JSON字符串,但僅僅是字符串,然後再將JSON編碼成字符串數組。這可能不是你想要的,因爲它可以打印接收到的數據,但不能訪問將被解碼爲字符串而不是對象的行的組件。

比較https://stackoverflow.com/a/6809069/103081 - 在這裏,PHP使用括號內的單個JSON對象回顯回調()

我懷疑修復貌似https://stackoverflow.com/a/15511447/103081 並且可以按如下調整:

header('Content-Type: application/json'); 
require 'database.php'; 
mysql_query('SET CHARACTER SET utf8'); 
$myjsons = array(); 
$qry = 'SELECT * FROM quotes ORDER BY id'; 
$result = mysql_query($qry); 

while($row = mysql_fetch_assoc($result)){ 
    $myjsons[] = $row; 
} 
echo $_GET['callback'] . '(' . json_encode($myjsons) . ')'; 

一旦你有了這個,你應該找回正確的JSON爲對象的數組,可以使用@ Felix的代碼在客戶端。

+0

你和@ Felix的解決方案一起工作:d非常感謝你 – pashOCONNOR

+0

高興我們幫助! – Paul

0

你的問題是在這裏:

while($row = mysql_fetch_assoc($result)){ 
    $myjsons[] = json_encode(array($row)); 
} 
echo $_GET['callback'] . '(' . json_encode($myjsons) . ')'; 

你需要的東西是這樣的:

while($row = mysql_fetch_assoc($result)){ 
    $myjsons[] = $row; 
} 
$myjsons['callback'] = $_GET['callback']; 
echo json_encode($myjsons);