如何使用AJAX和JSON获取从PHP文件返回的数据

How to use AJAX and JSON to get data returned from a PHP file

本文关键字:文件 PHP 返回 数据 获取 何使用 AJAX JSON      更新时间:2023-09-26

对于初学者来说,这个网站是在Debian机器上运行的。我有一个SQLite3数据库,里面有最新的新闻文章。我正在尝试使用PHP查询数据库中的这些文章,并将其作为JSON传递给AJAX,这样它就可以显示在我的网页上。现在什么都没有显示,我不知道错误在哪里。

以下是从数据库获取信息的PHP代码:

<?php
class MyDB extends SQLite3
{
    function __construct()
    {
        $this->open('website.db');
    }
}
$db = new MyDB();
$result = $db->query('SELECT * FROM news');
echo json_encode($result);
?>

以下是AJAX所在的JavaScript:

<script type="text/javascript">
 function getNews()
 {
     console.log("firstStep");
      $(document).ready(function()
      {
        console.log("secondStep");
        $.getJSON("http://localhost/getNews.php",function(result){
            console.log("thirdStep");
            $('news').append(result); // display result
                 });
       });
  }

我认为错误发生在$.getJSON("http://localhost/getNews.php",function(result)附近,因为在控制台中,thirdStep永远不会输出

这是它应该附加到的HTML:<div id = "newsEntry"> <news> test </news> </div>

如有任何帮助,我们将不胜感激。

要了解发生了什么,您可能需要添加一个错误处理程序:

$(document).ready(function() {
  $.ajax({
    url: "http://localhost/getNews.php",
    dataType: "json",
    success: function(result) {
      console.log("thirdStep");
    },
    error: function(err) {
      alert(err);
    }
  });
})

默认情况下,web服务器将内容作为application/html提供。因此,当您简单地echo一个JSON字符串时,它被视为html页面上的文本。要真正从服务器返回JSON,您需要专门设置它

echo:之前包含此行

header('Content-Type: application/json; charset=utf-8');

编辑

在检查您的PHP代码时,您缺少一行代码。请注意,$db->query()会返回一个SQLite3Result。您需要致电:

$array = $result->fetchArray(SQLITE3_ASSOC);  // get an associative array first
$json = json_encode($array);
header('Content-Type: application/json; charset=utf-8');
echo $json