用ajax怎么定时刷新dtree!急需解决
我是这么写的!怎么刷新页面没有什么效果
我的结构流程就是 首先点击树形图的节点,跳进servlet中,执行查询的方法。然后有调回该页面。页面刷新没有什么反应。
各位帮我解决一下!谢谢各位了!急需解决呀!
首先是frame页面 代码如下
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title></title>
<link href="images/css.css" rel="stylesheet" type="text/css" />
</head>
<frameset cols="45%,*,0" frameborder="no" border="0" framespacing="0">
<frame src="devgroupmng_l.jsp" name="left" scrolling="no" noresize="noresize" id="left" />
<frame src="devgroupmng_f.jsp" name="right" scrolling="auto" noresize="noresize" id="right" />
<frame name="ddhidden" src="" />
</frameset>
<noframes><body>
</body>
</noframes></html>
左边页面devgroupmng_l.jsp是用dtree写的页面。就是树形图 部分代码如下
<script type="text/javascript">
d = new dTree('d');
<%
System.out.println("abcde");
GetGroup dao=new GetGroup();
Vector arr=new Vector();
GetDev getdev=new GetDev();
List list=new ArrayList();
List camera=new ArrayList();
camera=(List)request.getAttribute("camera");
DevGroupInfo vo=new DevGroupInfo();
GetCamera getcamera=new GetCamera();
camera=getcamera.getcamerainfo();
CameraStatus cs=new CameraStatus();
CameraInfo camerainfo=new CameraInfo();
list=getdev.getonlinedev();
arr=dao.getGroupInfo();
for(int i=0;i<arr.size();i++)
{
vo=new DevGroupInfo();
vo=(DevGroupInfo)arr.get(i);
if(vo.getDevId()==null||"".equals(vo.getDevId())){
%>
d.add('<%=vo.getGroupId()%>','<%=vo.getGroupParentId()%>','<%=vo.getGrouopName()%>',
'','','_target','img/tree.gif','img/tree.gif');
<%
}else{
for(int k=0;k<camera.size();k++){
camerainfo=new CameraInfo();
camerainfo=(CameraInfo)camera.get(k);
%>
IP='<%=camerainfo.getCameraip()%>';
cameraId='<%=camerainfo.getCameraid()%>';
port='<%=camerainfo.getConport()%>';
<%
if(vo.getDevId().equals(camerainfo.getCameraid().substring(0,10))){
if(camerainfo.getStatus().equals("1")){
%>
d.add('<%=vo.getGroupId()%>','<%=vo.getGroupParentId()%>','<%=vo.getGrouopName()%>',
'javaScript:forwards(\''+IP+'\',\''+cameraId+'\',\''+port+'\')','','','img/line_dev.GIF','','','');
<%
}else{
%>
d.add('<%=vo.getGroupId()%>','<%=vo.getGroupParentId()%>','<%=vo.getGrouopName()%>',
'javaScript:forwards(\''+IP+'\',\''+cameraId+'\',\''+port+'\')','','','img/noline_dev.GIF','','','<%=vo.getGroupId()%>');
<%}%>
<%}%>
<%
}
%>
<%}
%>
<%}
%>
document.write(d);
</script>
右边就是调用activeX页面。就别管了!
然后我在左边那个页面devgroupmng_l.jsp用了ajax。就是要刷新dtree页面
ajax 代码如下
var xmlhttp;
function createXMLHttpRequest(){
if(window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else if(window.ActiveXObject){
try{
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
}
}
}
}
function doRequest(){
createXMLHttpRequest();
var url = "flush";
xmlhttp.onreadystatechange = callback;
xmlhttp.open("GET",url,true);
//xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlhttp.send(null);
}
function callback(){
if(xmlhttp.readyState==4){
if(xmlhttp.status==200){
window.setInterval(doRequest,"10000");
}
}
}
然后跳进servlet中
代码如下package com.Dtree.Servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.Dtree.po.CameraInfo;
import com.Dtree.po.CameraStatus;
import com.Dtree.utils.DBUtils;
public class flush extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List camera=new ArrayList();
DBUtils db=new DBUtils();
ResultSet rs=null;
PreparedStatement stmt=null;
StringBuffer sqlSel=new StringBuffer();
CameraInfo camerainfo=new CameraInfo();
db.getConn();
sqlSel.append("select SBBH,MC,IP,TXDK,KZDK,LX,ZXZT from ITS_CAMERA ");
try {
stmt=db.getStatement(sqlSel.toString());
rs=stmt.executeQuery();
while(rs.next()){
camerainfo=new CameraInfo();
camerainfo.setCameraid(rs.getString("SBBH"));
camerainfo.setCameraName(rs.getString("MC"));
camerainfo.setCameraip(rs.getString("IP"));
camerainfo.setPicport(rs.getString("TXDK"));
camerainfo.setConport(rs.getString("KZDK"));
camerainfo.setType(rs.getString("LX"));
camerainfo.setStatus(rs.getString("ZXZT"));
camera.add(camerainfo);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
db.closeConn();
if(stmt!=null){
try {
stmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
request.getRequestDispatcher("devgroupmng_l.jsp").forward(request,response);
//response.sendRedirect("devgroupmng_l.jsp");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
[解决办法]
好有难度的样子,帮顶
[解决办法]
为什么要定时刷新啊, 实时获取不行么?
[解决办法]
任务调度!定时执行编写的方法,你在网上搜一下!
[解决办法]
DEBUG跟跟吧
[解决办法]
request.getRequestDispatcher("devgroupmng_l.jsp").forward(request,response);
这句话一般放到doGet(doPost)最后一句。