Javascript PHP、JSON在删除时未正确显示
我有以下HTML:Javascript PHP、JSON在删除时未正确显示,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>
<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
}
}
window.onload=function(){
init();
}
var-xmlhttp;
var区间句柄;
函数init(){
getAjaxData();
intervalHandle=setInterval(getAjaxData,2000);
}
函数getAjaxData(){
if(window.XMLHttpRequest){
//IE7+。Firefox、Chrome、Opera、Safari
xmlhttp=新的XMLHttpRequest();
}否则{
//IE6,IE5
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=showJSONData;
open(“GET”,“results2Json.php”,true);//从数据库获取结果
xmlhttp.send();
}
函数showJSONData(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var data=JSON.parse(xmlhttp.responseText);
如果(data.results.length>0){//删除这一行及其下面的右大括号,代码将执行预期的操作
var输出=“”;
输出+=‘名称’;
对于(var i=0;i
最后是以下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) . "}");
?>
如果函数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";
}
}
函数showJSONData(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
var data=JSON.parse(xmlhttp.responseText);
如果(data.results.length>0){//删除这一行及其下面的右大括号,代码将执行预期的操作
var输出=“”;
输出+=‘名称’;
对于(var i=0;i
旁注:PHP代码的最后一行是错误的做法,您应该使用echo json_encode(array('results'=>$rs));
这样您的整个输出都由json_encode
@scrowler控制谢谢,我会记住这一点并在实际代码中进行更改。谢谢,这比上面的答案更整洁