首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

用ajax如何定时刷新dtree!需解决

2012-01-09 
用ajax怎么定时刷新dtree!急需解决我是这么写的!怎么刷新页面没有什么效果我的结构流程就是 首先点击树形

用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)最后一句。

热点排行