PHP, JSON在删除时不能正确显示

PHP, JSON not displaying correctly on delete

本文关键字:不能 显示 删除 JSON PHP      更新时间:2023-09-26

我有以下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) . "}");
?>

都只是从DB中提取单个列,并每2秒自动刷新一次结果。如果我添加到DB中,结果刷新得很好。如果我从数据库中删除项目,所有工作也很好,直到我试图删除最后一个项目。然后它会留在屏幕上。我知道,如果我拿出if (data.results.length > 0)行,那么最后一项将删除OK,但我想要实现的是,如果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";
       }
    }