我有这个JavaScript函数向外部PHP脚本提供AJAX请求,如果新检查与旧检查不同,我希望这会自动更新HTML <div>
。如果内容更改,自动刷新JS数组?
<script>
window.setInterval(function()
{
$(function()
{
$.ajax({
url: 'api.php', data: "", dataType: 'json', success: function(rows)
{
for (var i in rows)
{
var row = rows[i];
var id = row[0];
var vname = row[1];
var Password = row[2]
$('#output').append("<hr />").append("<b>id: </b>"+id+"<b> name: </b>"+vname+" <b>Password: </b>"+Password);
}
}
});
});
}, 5000);
</script>
目前这成功地返回,并与该数组中的内容更新DIV,问题是,因为加入window.setInterval(function()
线,将服务器的连接,每5秒,并重复数据更新<div>
..当所有我想要的,它为它呼应了新的数据(如果有纽约州)
这是我其他的PHP脚本:
$STD = new mysqli ("localhost", "root", "hidden", "ajaxrequests");
$array = array();
$Query = $STD->prepare ("SELECT * FROM ajaxdata");
$Query->execute();
$Query->bind_result($ID, $Name, $Password);
while ($Query->fetch())
{
$array[] = array ($ID, $Name, $Password);
}
echo json_encode($array);
为什么使用append而不是只写整个输出?另外,如果你想使用JSON字符串本身并假设JSON字符串不是太大,也许你只是将最近的字符串存储到一个变量中,将它与传入的字符串进行比较,如果匹配,则不做任何事情。如果它们不匹配,则用新数据覆盖整个DOM元素。 – 2013-03-07 20:46:31
@MikeBrant你能提供一个例子吗? – user2146021 2013-03-07 20:49:06
@MikeBrant此外,它已建立,它已经每隔5秒发送请求并存储响应。为什么不直接用每个请求来替换内容?无论如何(因为浏览器缓存非常高效),比较返回的内容和当前内容将花费比简单地更新DOM更长的时间。如果你的响应真的很大,那么你可能想要在服务器端对它进行哈希处理,并只比较哈希浏览器端来检查更新。 – 2013-03-07 20:52:15