我正在尝试编写一个 ajax 调用,该调用检查我的数据库并在发现更改时更新div。
我对JavaScript相对较新,对JSON更陌生。
我认为问题在于我如何返回 JSON 数组,或者如何在 if 语句中使用它,但我不确定如何正确执行此操作。我得出这个结论是基于我从成功函数"连接并执行的 PHP 页面..."获得控制台日志返回的事实,而不是"更新的票证页面...".log。
这是我的JavaScript:
function checkUpdates()
{
$.ajax({
type: "POST",
url: 'ajax/checkDB.php',
data: {},
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
console.log('Connected and executed PHP page...');
if (data.hasChanged == true) {
console.log('Updated Tickets Page...');
$("#contents").load("dynamic/tickets.php");
$("#contents").fadeTo("fast", 1);
}
}
});
}
$(document).ready(function() {
setInterval("checkUpdates()", 3000); // Calls the function every 3 seconds
});
这是我的PHP(checkDB.php,在ajax请求中调用),如果它很重要的话。
<?php
include("../static/config.php");
session_start();
header("Content-Type: text/json");
$result = mysqli_query($con,"SELECT notify FROM tickets WHERE notify='0'");
$row_cnt = mysqli_num_rows($result);
if($row_cnt > 0) {
echo json_encode(array('hasChanged' => 'true'));
mysqli_query($con,"UPDATE tickets SET notify='1' WHERE notify='0'");
} else {
echo json_encode(array('hasChanged' => 'false'));
}
?>
您有错别字error
。您可以更改不带字符串php
代码或更改if
条件。
//changes made here
if (data.hasChanged == "true") {
.PHP
if($row_cnt > 0) {
//here you are having string "true"
echo json_encode(array('hasChanged' => 'true'));
mysqli_query($con,"UPDATE tickets SET notify='1' WHERE notify='0'");
} else {
echo json_encode(array('hasChanged' => 'false'));
}
在代码截图中,您正在检查字符串'true'
是否等于布尔true
。
您有两种选择:
从 PHP 返回一个布尔值
echo json_encode(array('hasChanged' => true));
和
echo json_encode(array('hasChanged' => false));
或者你可以用以下方法检查JavaScript中的字符串:
if (data.hasChanged == "true") {
您应该以正确的数据类型返回数据。
当你用问题中的代码对json进行编码时,哪个'true'不是布尔值,所以你的javascript无法将'hasChanged'属性作为布尔值进行比较。
你能试试下面的代码吗?这将使"hasChanged"属性成为布尔值。
echo json_encode(array('hasChanged' => true));