2016-09-23 31 views
0

如何從json的研究中恢復數據?我想恢復單獨的項目,結果顯示在PHP頁面中創建新的元素,例如恢復item.f,item.m創建新的元素,如item.f < span> item.m. ..謝謝使用ajax/json恢復php mysql查詢?

(在提交錯誤) 錯誤無法讀取空的物品「的屬性

php頁面(不查詢)

if ($_GET['action'] == "chatheartbeat") { chatHeartbeat(); } 

function chatHeartbeat() { 
    $sql = "select * from mensagens "; 
    $query = mysql_query($sql); 
    $items = ''; 
    $chatBoxes = array(); 
    while ($chat = mysql_fetch_array($query)) { 
     $items. = << < EOD 
{ 
"s": "0", 
"f": "{$chat['de']}", 
"m": "{$chat['mensagem']}", 
"i": "{$chat['img']}" 
}, 
EOD; 
    } 
} 

指數(調用對查詢呈現結果 - 錯誤在這裏 - 這裏需要幫助)

$.ajax({ 
    url: "asd.php?action=chatheartbeat", 
    cache: false, 
    dataType: "json", 
    success: function(data) { 
     $.each(data.items, function(i, item) { 
      alert(item.f) 
     }); 
    } 
}); 
+0

不要手動生成JSON,產生一個陣列/對象,並使用'json_encode()',以產生有效的JSON。 – jeroen

+0

一些明智的代碼縮進將是一個好主意。它可以幫助我們閱讀代碼,更重要的是,它可以幫助您**調試您的代碼** [快速瀏覽編碼標準](http://www.php-fig.org/psr/psr-2/ )爲了您自己的利益。您可能會被要求在幾周/幾個月內修改此代碼 ,最後您會感謝我。 – RiggsFolly

回答

2

由於@jeroen說不要手動生成JSON字符串使用json_encode()從PHP創建JSONString數組或對象。

if ($_GET['action'] == "chatheartbeat") { 
    $sql = "select * from mensagens "; 
    $query = mysql_query($sql); 

    $chatBoxes = array(); 

    while ($chat = mysql_fetch_array($query)) { 
     $t - new stdClass(); 
     $t->s = "0"; 
     $t->f = $chat['de']; 
     $t->m = $chat['mensagem']; 
     $t->i = $chat['img']; 

     $chatBoxes[] = $t; 
    } 

    $items = json_encode($chatBoxes); 

    // now just echo $items to return it to the javascript in the browser 
    // here or later in the code if there is more to your code than you showed us 
    echo $items;    
} 

參考文獻:

json_encode()

json_decode()

+0

然後你也需要輸出它:-)我不明白OP如何使用無效的json進入'success'函數(沒有任何內容),因此可能還有其他事情正在發生...... – jeroen

+0

是的,我不確定他們創建它後會怎麼做。我希望他們已經覆蓋了! – RiggsFolly

+0

不知道爲什麼代碼是在一個函數中,我刪除它,因爲它似乎無關至少這個答案的目的 – RiggsFolly

0

謝謝大家的幫助,我設法如下解決問題

PHP的頁面(不查詢)

$result = mysql_query("SELECT * FROM mensagens");   
while($array = mysql_fetch_assoc($result)){ 
$table[]= array("de"=>$array['de'],"mensagem"=>$array['mensagem']); }       
echo json_encode($table); 

指數

$.ajax({          
    url: 'asd.php',              
    dataType: 'json',    
    success: function(data)   
    { 
    for($i=0; $i < data.length; $i++){ 
$("#chatbox_"+chatboxtitle+" .chatboxcontent").append(
'<div class="message"><span class="from">'+data[$i].de+':&nbsp;&nbsp; 
</span><span class=content">'+data[$i].mensagem+'</span></div>'); 
}} 
});