0

我正在做一个考试项目。我坚持这一点,我希望你们中的某个人可以帮助我(我是意大利人,很抱歉我的英语不好!)。我必须使用 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 上的按钮时,控制台说“未找到元素”指的是 PHP 脚本。

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

错误在哪里?

谢谢大家。

4

2 回答 2

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带有 post 请求发送和获取json输出

于 2013-07-21T09:45:57.247 回答
0

“打印”的工作方式与“回声”不同。至少我正在从 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 />")
于 2013-07-21T09:46:53.080 回答