2013-08-21 2 views
0

Я хочу получить данные из mysql и эхо-сигнал от json_encode. то мой JQUERY поймает JSON через $.getJSON и добавит результат в мой <ul>.извлекать данные из mysql, а затем отображать через JSON

им пытаются выяснить, почему данные, захваченные Jquery не печатает на моем index.php

это мой index.php

<html> 
<?php 

    include_once('connect.php'); 

    $sql = "SELECT * FROM data"; 
    $query = mysql_query($sql); 
    $result = array(); 


    while($row = mysql_fetch_array($query)) 
     array_push($result,     
      array(       
      'name' => $row[1],    
      'msg' => $row[2])); 

    echo json_encode(array("key" => $result));  
?> 

<body> 

<ul> 
    //insert fetch data here 
</ul> 



<script type="text/javascript" src="./js/jquery.js"></script> 
<script type="text/javascript" src="./js/custom.js"></script> 
</body> 
</html> 

и вот мой Jquery

function my_function() { 
    $.getJSON("index.php", function(data) { 
     $.each(data.key, function(){ 
     $("ul").append("<li>Name: "+this['name']+"</li>" 
         "<li>message: "+this['msg']+ "</li>"); 
     }); 
}); 
} 
+1

Если вы хотите PHP скрипт для возвращения JSON, то строка JSON должна быть ** ** только вещь 'echo'd по сценарию. У вас есть куча html, который делает недействительным json. –

+0

У вас есть srctag в index.php? Если да, это ваша проблема, сделайте так, чтобы он возвращал только массив json. Если нет, пожалуйста, обновите сообщение до того, что у вас есть – Martijn

+0

, можете ли вы подробнее рассказать о том, что вы имеете в виду, «должно быть единственной вещью, которую скрипт« – bobbyjones

ответ

0

first: проверьте свой вывод index.php сам по себе, чтобы увидеть, отображается ли он действительным json. ¿Имеются ли недопустимые символы UTF8? В этом случае вывод json_encode равен NULL.

второй: Я хотел бы использовать простой метод AJAX намекая JSON как тип данных:

jQuery.ajax({ 
     url: 'index.php', 
     dataType: 'json' 
}).done(function(data) { 
    for (i=1;i<data.length;i++) { 
     datarow=data[i]; 
      $("ul").append("<li>Name: "+datarow.name+"</li>"); 
      $("ul").append("<li>message: "+datarow.msg+ "</li>"); 
     } 

     }); 

третий: не используйте один и тот же скрипт для создания JSON и отобразить его, он ДАЕТ НИКАКИХ смысл отделять представление от приложения, если вы делаете все это в передней части. В этом случае вы могли бы использовать простой php для генерации всего этого, как сказал предыдущий ответ. (@Abdoul Sy)

0

Вам не нужно извлекать данные через JSON, поскольку вы эхо-сигнал JSON на той же странице. вы могли бы сделать что-то вроде этого:

<ul id="jsonData" data-json-data="<?php echo json_encode($result;)?>" 

И в файле JS:

var myData = $('#jsonData').data('json-data'); 
Смежные вопросы