2016-09-23 2 views
0

Как восстановить данные от исследования json? Я хотел бы восстановить отдельные элементы в качестве результата результата на странице php для создания новых элементов, например восстановить item.f, item.m для создания новых элементов, таких как item.f </div> < span> item.m. .. спасибоВосстановить запрос php mysql с помощью ajax/json?

(ошибка представлена ​​в) Ошибки Не удается прочитать свойство элементов "нулевого

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; 
    } 
} 

Index (называет запрос пары представляют результаты - ошибка здесь - нужна помощь здесь)

$.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 говорит DonT вручную генерировать JSON строки использовать json_encode() для создания JSONString из PHP массив или объект.

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 попала в функцию «success» в любом случае с недопустимым json (ничего), поэтому, возможно, что-то еще происходит ... – 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); 

Index

$.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>'); 
}} 
}); 
Смежные вопросы