【问题标题】:PHP/JQUERY- Can't return data from a queryPHP/JQUERY - 无法从查询中返回数据
【发布时间】:2013-07-21 09:37:27
【问题描述】:

我正在做一个考试项目。我坚持这一点,我希望你们中的某个人可以帮助我(我是意大利人,很抱歉我的英语不好!)。 我必须使用 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。

哪里出错了?

谢谢大家。

【问题讨论】:

  • 不知道我明白了,它是说 404 File not found,还是说“no element found”?
  • 它说“找不到元素”..也许我在 jquery 脚本中出错了?

标签: php jquery phpmyadmin


【解决方案1】:

替换下面的代码

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 &lt;br /&gt;(这是 JSON,而不是 HTML),并且您必须在要返回的元素之间使用逗号。

json_encode 将为您正确处理数组格式。

jsFiddle Demo 带有 post 请求以发送和获取 json 输出

【讨论】:

  • +1 不过,最好解释您为什么提出您建议的更改。我已经为你添加了解释。
  • @T.J.Crowder 感谢您的解释,我还在答案中添加了HTML 标记和JS
  • 您是否按照上面的建议添加了HTML 标记并确保添加了jQuery 引用。如果是,那么您遇到了什么错误?
  • 是的,我已按照您的建议更改了代码。在 FF 上,当我打开 web 控制台时,会出现以下错误消息:“未找到元素”,指的是 PHP 脚本。我已将包含脚本和 HTML 页面的文件夹放在 xampp/phpmyadmin/test 中,并运行 Apache 和 MySql。会不会有问题?
  • 抱歉转帖,但也许这会有所帮助:在浏览器中运行 php 脚本,查询结果如下: [{"0":"AGGERI","denominazione":"AGGERI" },{"0":"ALCHEMICA 1961","denominazione":"ALCHEMICA 1961"} 等等..] 用 json 解析它的正确方法是什么?
【解决方案2】:

'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 />")

【讨论】:

  • 这不是 OP 的根本问题。
猜你喜欢
  • 1970-01-01
  • 2020-08-31
  • 2014-12-08
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多