PHP, JSON在删除时不能正确显示
PHP, JSON not displaying correctly on delete
我有以下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";
}
}
相关文章:
- 日期不能显示在高图表上
- angularjs:不能显示 JS 'typeof' 的返回值
- 为什么我'在关闭第一模态对话框之后,m不能显示第二模态对话框
- 主干路由器不能显示视图
- 不能显示画布对象
- 为什么在IE8的低变焦级别下,onresize不能显示呢?
- 不能显示数组输出
- 不能显示JavaScript的警告框
- 不能显示姓氏facebook js sdk
- 在AngularJS中,视图不能显示来自控制器的正确模型数据
- 为什么我不能显示'元素的显示方法
- 不能显示之后添加的元素
- 天行者,不能显示相同的图标两次
- 在AngularJs中不能显示$scope数组对象
- 不能显示标签地图
- 窗口点打开方法得到页面不能显示下载csv文件的问题
- jQuery -点击链接时不能显示下拉列表
- ExtJS组合框不能显示项目
- 为什么使用popcorn.js不能显示XML字幕?
- Document.style.display由于某种原因不能显示