对于初学者来说,这个网站是在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>
任何帮助将不胜感激。
答案 0 :(得分:1)
默认情况下,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
答案 1 :(得分:1)
要了解发生了什么,您可能需要添加错误处理程序:
$(document).ready(function() {
$.ajax({
url: "http://localhost/getNews.php",
dataType: "json",
success: function(result) {
console.log("thirdStep");
},
error: function(err) {
alert(err);
}
});
})