【发布时间】:2013-05-20 17:59:12
【问题描述】:
我想根据一个值动态更改我的网站。我从我的 MySQL 数据库中检索数据,并希望更改尽可能接近实时。我有一些代码在某种程度上可以执行我想要的操作,但是值的更新似乎失败了,起初它可以工作,然后在几次调用之后,它似乎只是在两个值之间随机切换。
我有三个 php 页面,一个从数据库中检索一个值(database.php),另一个根据数据库值生成响应(response1.php 和 response2.php)。我不认为这些页面是问题的一部分,因为我已经检查过它们是否返回值并且它们返回了我想要的内容。项目的第二部分(可能会失败)是我的主要 html 页面(如下)。我不确定我是否选择了解决问题的最佳技术,或者是否有更好的方法来解决问题。
<html>
<head>
<script type="text/javascript">
var databaseanswer, xmlhttp;
function databasecheck() {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "database.php", true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
databaseanswer = xmlhttp.responseText;
document.getElementById("database").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.send();
}
function response() {
if (databaseanswer == "No Tag") {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "response1.php", true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("response").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.send();
}
else {
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "response2.php", true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("response").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.send();
}
}
setInterval(databasecheck, 1800);
setInterval(response, 2000);
</script>
</head>
<body>
<p> this is a test site </p>
<p> response from server: </p>
<div id="response">
</div>
<p> answer from database: </p>
<div id="database">
</div>
</body>
</html>
好的,这是我编辑的代码:
<html>
<head>
<script>
function database(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","responsedatabase.php",false);
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("database").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.send();
}
setInterval(database,1000);
</script>
</head>
<body>
<p>answer from database: </p><div id="database"></div>
</body>
</html>
【问题讨论】:
-
您应该考虑使用
jQuery'sAJAX功能:api.jquery.com/jQuery.ajax -
if (databaseanswer == "No Tag") {毫无意义,或者其他什么 -
基本上“无标签”是我数据库中的默认值。
标签: javascript mysql ajax xmlhttprequest