【问题标题】:Php to Json File append to ul Ajax JqueryPhp to Json File 追加到 ul Ajax Jquery
【发布时间】:2018-08-16 06:12:31
【问题描述】:

您好,我在我的 html 文件中将 PHP Json 文件附加到 ul 时遇到问题。我已经使用连接到 txt 文件的 data-url 完成了它,但我希望它连接到我的 Mysql 数据库。这是一个使用 data-url 的工作示例:

 $.ajax({
        url: $container.data("url")
      , dataType: "text"
      , success: function(data) {
        var persons= data.toString().split('\r\n');

        for (var i = 0; i < persons.length; i++) {
          var person = persons[i];
          person && $content.append("<li><b>" + person + "</b></li>");
        }

        $item           = $("#container ul li"),

        //Pre-caculate the count of items
        itemCount       = $item.size();
        //Clone the contents
        $content.append($content.html());
      }
    });

这是我尝试使用 Json 做的事情

$.ajax({
    type: 'GET',
    url: 'php/index.php',
    dataType: 'json',
 success: function(data) {
    $.each(data, function(i, item) {
       $content.append("<li><b>" + item.name + "</b></li>");
    });
});

这是连接到我的数据库的 PHP 文件:

<?php

$host    = 'localhost';
$db      = 'made';
$user    = 'root';
$pass    = '';
$charset = 'utf8';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$opt = [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
        ];


$dbh = new PDO($dsn, $user, $pass, $opt);

$sql  = $dbh->query("SELECT name FROM employee");
$rows = array();
while ($row = $sql->fetchall()) {
    $rows[] = $row;
}
echo json_encode($rows);


?>

输出:

[[{"name":"JAMES, MARY A."},{"name":"CARDINAL, GRACE S."},{"name":"RAMON, CHELYND."},{"name":"APPLE, KATHRINE C."},{"name":"JOHNSON , WILSON J."},{"name":"BILL, ANDREW P."}]]

【问题讨论】:

  • 您的 PHP JSON 文件是什么样的?它应该是 PHP 页面上的 JSON 字符串。通常使用 PHP 从 MySQL 获取数据来处理数据,然后使用 echo json_encode($assocArray); 将 JSON 返回到 JavaScript。
  • 嗨,我已经更新了我的帖子
  • 非常感谢。 php调用是我唯一的错误吗我的ajax调用有什么问题吗?
  • $rows = array(); while ($row = $sql-&gt;fetchall()) { $rows[] = $row; } 改为 echo json_encode($sql-&gt;fetchAll());

标签: php jquery mysql json ajax


【解决方案1】:

根据fetchAll()的文档:

PDOStatement::fetchAll() 返回一个数组,其中包含结果集中的所有剩余行。该数组将每一行表示为列值数组或具有与每个列名称对应的属性的对象。如果要获取的结果为零,则返回一个空数组,失败则返回 FALSE。

因此,您无需在此处执行循环。它最终创建了一个添加另一个数组的冗余循环。 (注意开头的[[ 吗?)只需编辑您的代码,然后删除循环:

$sql  = $dbh->query("SELECT name FROM employee");
$rows = $sql->fetchAll();
echo json_encode($rows);

【讨论】:

  • 谢谢。 ajax 调用怎么样?我在那部分做错了吗?
  • 看起来不错。通过更改,它应该可以正常工作。执行console.log(data); 并验证数据是否正确。
猜你喜欢
  • 2011-10-07
  • 2021-10-20
  • 2012-05-25
  • 2016-03-29
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-15
相关资源
最近更新 更多