我们公司有一个传感器网络,我要实现的功能是将传感器网络的实时拓扑图显示在Web上,采用apache+php+mysql实现。当某个节点入网的时候,数据库里面就会多一条父节点id和子节点id的一条记录(具体如何实现不是本问题的重点)。目前的情况是,我能根据数据库当前的记录能够画出一个简单的传感器网络拓扑图(通过php的jpgraph库实现),因为节点是动态加入或者退出的,所以我的拓扑图需要实时更新,而且不能刷新页面,我想通过ajax来实现。
文件1:topology.php
<html>
<head>
<title>
节点拓扑展示
</title>
</head>
<body onload='setInterval("show()",1000)'><script type="text/javascript">
function show()
{
var xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById("topology").src=xmlhttp.responseText;
}
}
xmlhttp.open("GET","topology_2.php",true);
xmlhttp.send();
}
</script><img id="topology"/>
</body>
</html>文件2:topology_2.php
<?php
echo "topology_1.php";
?>文件3:topology_1.php(用于读数据库数据之后,画出拓扑图,读到不同的数据,画出的图形不一样)说明:1.由于jpgrah库好像只能支持<img src=...>的形式来显示图片,所以在文件1中会有img标签
2.我的想法是定时去更新图片,所以使用了setInterval("show()",1000)这个函数,现在的问题是以上代码并不能在不刷新页面的情况下就更新图片。求高手解答,只要能解决问题,绝对给分~
文件1:topology.php
<html>
<head>
<title>
节点拓扑展示
</title>
</head>
<body onload='setInterval("show()",1000)'><script type="text/javascript">
function show()
{
var xmlhttp;
if(window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById("topology").src=xmlhttp.responseText;
}
}
xmlhttp.open("GET","topology_2.php",true);
xmlhttp.send();
}
</script><img id="topology"/>
</body>
</html>文件2:topology_2.php
<?php
echo "topology_1.php";
?>文件3:topology_1.php(用于读数据库数据之后,画出拓扑图,读到不同的数据,画出的图形不一样)说明:1.由于jpgrah库好像只能支持<img src=...>的形式来显示图片,所以在文件1中会有img标签
2.我的想法是定时去更新图片,所以使用了setInterval("show()",1000)这个函数,现在的问题是以上代码并不能在不刷新页面的情况下就更新图片。求高手解答,只要能解决问题,绝对给分~
/**
* AJAX Upload ( http://valums.com/ajax-upload/ )
* Copyright (c) Andrew Valums
* Licensed under the MIT license
*/
这个应该是这样吧
echo "topology_1.php?".rand();
然后你前端用ajax定时去取接口中的图片地址 然后把图片地址赋给 那个src 不就行了吗