PHP / JQUERY-无法从查询中返回数据

时间:2013-07-21 09:37:28

标签: php jquery phpmyadmin

我正在做一个考试项目。我坚持这一点,我希望你们中的某个人可以帮助我(我是意大利人,很抱歉我的英语不好!)。 我必须使用PHP脚本查询存储在phpmyadmin中的现有数据库。然后,需要使用jquery脚本解析查询结果并将其打印到HTML页面。 这是PHP脚本:

    <?php
     $con = mysql_connect('localhost', 'root', '');
     if (!$con) {
       die('Errore di connessione: ' . mysql_error());
     }

     mysql_select_db("progetto_lpw", $con);

     $sql="SELECT denominazione FROM farmacia";
     $result = mysql_query($sql) or die(mysql_error());

     $num=mysql_numrows($result);
     while($row = mysql_fetch_array($result)){
         print json_encode($row['denominazione']);
         print "<br />";
      }
      ?>

我已经测试了通过浏览器调用它的PHP脚本,它可以工作。

然后,我用这个jquery脚本解析结果(使用这个组合是项目的要求):

$("#button").click(function(){

 $.getJSON('json.php', function(data) {

        $.each(data, function(index,value){

                $("#xx").append("<p>"+value+"</p>")
                })
            })
})

问题是:当我打开HTML页面并单击firefox上的按钮时,consolle会说“找不到元素”,指的是PHP脚本。

“xx”是打印元素的div的id。

错误在哪里?

感谢大家。

2 个答案:

答案 0 :(得分:2)

替换以下代码

while ($row = mysql_fetch_array($result)) {
    print json_encode($row['denominazione']);
    print "<br />";
}

使用以下代码并尝试

$rows = array();
while ($row = mysql_fetch_array($result)) {
    $rows[] = $row['denominazione'];
}

header('Content-type: application/json');
echo json_encode($rows);

HTML

<button id="button">Fetch JSON</button>
<div id="xx"></div>

JS

$("#button").click(function() {
    $.getJSON('json.php', function(data) {
        $.each(data, function(index, value) {
            $("#xx").append("<p>" + value + "</p>")
        });
    });
});

来自json.php的回复应采用以下格式

["AGGERI","ALCHEMICA 1961"]

你的代码不起作用的原因是它产生的输出如下:

"foo"<br />
"bar"<br />

这无效JSON。要有效,您必须在那里有HTML <br />(这是JSON,而不是HTML),并且您必须在要返回的元素之间使用逗号。

json_encode将正确处理格式化数组。

jsFiddle Demo 发帖并获取json输出

答案 1 :(得分:0)

'print'与'echo'的工作方式不同。至少我发送带有来自php的echo的JSON包。 你能替换它吗?

// in php
echo json_encode($row['denominazione']);

// in jquery script, best to place "<br />" tag here
$("#xx").append("<p>"+value+"</p><br />")