javascript - PHP、JSON 在删除时无法正确显示

标签 javascript php json

我有以下 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/

相关文章:

javascript - Kendo 网格 - 如何通过 UP/DOWN 键盘键使整行选择可导航?

javascript - 有没有一种方法可以递归地删除值为 NULL 或 UNDEFINED 或对象为空的深层属性?

javascript - 模态窗口/foundation.reveal.js 并传递一个变量

Javascripts 地理定位 - 用户拒绝提供数据

javascript - 通过 php 加载更改 total.txt 文件

javascript - 如果 JSON 数组为 NULL,则返回 -1 仅适用于某些数据

php - 具有多个上传文件的动态元素

php - MySQL查询以显示基于三个表的格式

javascript - 返回未定义的 jQuery JSON

json - Ruby 使用 OpenStruct 解析 json 数组