我有以下 HTML:
<html>
<head>
<script src="results.js" type="text/javascript"></script>
<title>Results</title>
</head>
<body>
<div id="resultsDiv"></div>
</body>
</html>
以下 JavaScript:
window.onload = function() {
init();
}
var xmlhttp;
var intervalHandle;
function init() {
getAjaxData();
intervalHandle = setInterval(getAjaxData, 2000);
}
function getAjaxData() {
if (window.XMLHttpRequest) {
// IE7+. Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {
// IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = showJSONData;
xmlhttp.open("GET", "results2Json.php", true); // GET results from DB
xmlhttp.send();
}
function showJSONData() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var data = JSON.parse(xmlhttp.responseText);
if (data.results.length > 0) { // Delete this line and it's closing brace, below, and the code does what expected
var output = '<table border=1>';
output += '<tr><th>Name</th></tr>';
for (var i = 0; i < data.results.length; i++) {
output += '<tr><td>' + data.results[i].name + '</td></tr>';
}
output += '</table>';
document.getElementById("resultsDiv").innerHTML = output;
} //Closing brace
}
}
最后是以下 PHP:
<?php
$con = mysqli_connect("localhost","root","");
mysqli_select_db($con,"random");
$result = mysqli_query($con, "select name from random_name");
$rs = array();
while($rs[] = mysqli_fetch_assoc($result)) {
// do nothing ;-)
}
mysqli_close($con);
unset($rs[count($rs)-1]); //removes a null value
print("{ \"results\":" . json_encode($rs) . "}");
?>
所有这些都只是从数据库中提取单个列,并每 2 秒自动刷新一次结果。如果我添加到数据库,结果会令人耳目一新。如果我从数据库中删除项目,一切也都正常,直到我尝试删除最后一个项目。然后该内容保留在屏幕上。我知道,如果我取出 if (data.results.length > 0)
行,那么最终的项目将删除,但我想要实现的是表头也不会显示如果 php 文件中的 SQL 查询没有返回结果。任何帮助都会很棒,谢谢。
最佳答案
如果函数 showJSONData 没有结果,则您的程序没有输出,因此最终结果不会更新。将函数 showJSONData 更改为
function showJSONData() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
var data = JSON.parse(xmlhttp.responseText);
if (data.results.length > 0) { // Delete this line and it's closing brace, below, and the code does what expected
var output = '<table border=1>';
output += '<tr><th>Name</th></tr>';
for (var i = 0; i < data.results.length; i++) {
output += '<tr><td>' + data.results[i].name + '</td></tr>';
}
output += '</table>';
document.getElementById("resultsDiv").innerHTML = output;
} //Closing brace
else{
document.getElementById("resultsDiv").innerHTML = "no results";
}
}
关于javascript - PHP、JSON 在删除时无法正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23553827/