第一、我先给大家说一下我要实现的效果吧。下面是客户端的界面:
开始: 属性 属性值 2秒钟后: 属性 属性值 再过2秒:属性 属性值 再过2秒: 属性 属性值
id 1 id 2 id 3 id 4
name a name b name c name d ...
以上就是我想要实现的效果。 第二、客户端是用html+js做的,服务器端是用jsp做的。数据库是SqlServer。客户端通过xmlhttprequest发送定时请求,然后服务器端返回JSON格式的数据(如第一条中内容所示)。当前我的问题是:只能显示“开始”那样的效果(如第一条中所示),后面的效果根本显示不了。也就是说,现在不能实现刷新的效果,读了第一条就不往下走了。 第三、给大家看一下我的代码。
服务器端:(连接数据库的代码省略)
<% Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from test " );
StringBuffer result = new StringBuffer("{");
if(rs.next()){
id=rs.getString("id");
name=rs.getString("name");
result.append("'id':'" + id + "'" );
result.append(",'name':'" + name+ "'");
}
result.append("}");
out.println(result.toString());
%>
先谢谢各位了!
开始: 属性 属性值 2秒钟后: 属性 属性值 再过2秒:属性 属性值 再过2秒: 属性 属性值
id 1 id 2 id 3 id 4
name a name b name c name d ...
以上就是我想要实现的效果。 第二、客户端是用html+js做的,服务器端是用jsp做的。数据库是SqlServer。客户端通过xmlhttprequest发送定时请求,然后服务器端返回JSON格式的数据(如第一条中内容所示)。当前我的问题是:只能显示“开始”那样的效果(如第一条中所示),后面的效果根本显示不了。也就是说,现在不能实现刷新的效果,读了第一条就不往下走了。 第三、给大家看一下我的代码。
服务器端:(连接数据库的代码省略)
<% Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery("select * from test " );
StringBuffer result = new StringBuffer("{");
if(rs.next()){
id=rs.getString("id");
name=rs.getString("name");
result.append("'id':'" + id + "'" );
result.append(",'name':'" + name+ "'");
}
result.append("}");
out.println(result.toString());
%>
先谢谢各位了!
估计是页面缓存的影响。加时间戳
var url="zzz.jsp?zhang="+newDate().getTime();
xmlthhp.open("GET",url,true)
<script type="text/javascript">
var refreshTime = 1000 * 1;
var isRefreshing = false;
function getResult()
{if(isRefreshing) {
return;
}
isRefreshing = true; if (window.XMLHttpRequest)
{ req = new XMLHttpRequest();
}else if (window.ActiveXObject)
{ req = new ActiveXObject("Microsoft.XMLHTTP");} if(req)
{ req.open("GET","a1.jsp?timestamp=" + new Date().getTime(), true);
req.onreadystatechange = complete;
req.send(null);
}
} function complete()
{ if (req.readyState == 4)
{ isRefreshing = false; var jsonData = eval("(" + req.responseText + ")");
for (var key in jsonData) {
if(document.getElementById(key)){
document.getElementById(key).innerHTML = jsonData[key];
}
}
}
} function init() {
getResult();
setInterval("getResult()",refreshTime);
}
</script>
<body onLoad="init()">
......
希望大家给我修改后的完整代码,我是一个初学者,谢谢各位了。
isRefreshing = false;
if (req.readyState == 4){
if (req.status==200){//加这个试试呢
var jsonData = eval("(" + req.responseText + ")");
for (var key in jsonData) {
if(document.getElementById(key)){
document.getElementById(key).innerHTML = jsonData[key];
}
}
}
}
}
<script type="text/javascript">
var refreshTime = 1000 * 1;
var isRefreshing = false;
function getResult()
{if(isRefreshing) {
return;
}
isRefreshing = true; if (window.XMLHttpRequest)
{ req = new XMLHttpRequest();
}else if (window.ActiveXObject)
{ req = new ActiveXObject("Microsoft.XMLHTTP");} if(req)
{ req.open("GET","a1.jsp?timestamp=" + new Date().getTime(), true);
req.onreadystatechange = complete;
req.send(null);
}
} function complete()
{ if (req.readyState == 4)
{ isRefreshing = false; var jsonData = eval("(" + req.responseText + ")");
for (var key in jsonData) {
if(document.getElementById(key)){
document.getElementById(key).innerHTML = jsonData[key];
}
}
}
} function init() {
getResult();
setInterval("getResult()",refreshTime);
}
</script>
<body onLoad="init()">
......