我要实现一个提醒器的功能。
利用JS函数调用JSP,再用JSP调用数据库,如果有新数据就弹出一个提醒框。代码如下:
<script language= "JavaScript " type= "text/javascript ">
function panDuan(){
<%
UserInfo userInfo = new UserInfo();
List list = new ArrayList();
UserDAO userOpDAO = new UserDAO();
try {
list = userOpDAO.getDao(Integer.parseInt(uid));
} catch(Exception ex) {
System.out.println(ex.getMessage());
}
if(!list.isEmpty()){
for(int i=0;i <list.size();i++) {
DuanInfo dInfo = (DuanInfo)list.get(i);
int fid=dInfo.getFaSong();
int id=dInfo.getId();
session.setAttribute( "id ",Integer.toString(id));
session.setAttribute( "fid ",Integer.toString(fid));
fname=userOpDAO.getNameById(fid);
content=dInfo.getContent();
session.setAttribute( "content ",content);
session.setAttribute( "fname ",fname);
//out.print( "xiao ");
}%>
window.open( "tishi.jsp ", "thishi ", "width=300, height=300, titlebar=1,toolbar=0,scrollbars=yes,location=0,statusbar=0,menubar=0,resizable=0, screenX=120, left=120, screenY=120, top=120 ");
<%}else{session.setAttribute( "fname ",fname);}%>
setTimeout( "panDuan(); ",1000);
}
window.onload = panDuan;
</script>
基本功能是实现了,但是好像并不是每次都调用数据库,例如我打开页面时,查到有新数据,弹出提示,然后我查看后,将该信息的状态改变,如果是调用数据库的话,就不会再弹出提示了,但现在是提示总是不断的弹出,只有刷新该页后,才不再弹提示信息。
请高手指点一二。
------解决方案--------------------
你没必要这么写,嵌套解决不了问题。使用xmlhttp或者ajax很好
function panDuan(){
var xmlhttp = new XMLHttpRequest()
xmlhttp.open( "GET ", "xxx.jsp ",false)
xmlhttp.send(null)
if(xmlhttp.status==200)
{
if(xmlhttp.responseText == "new ")
{
window.open( "tishi.jsp ", "thishi ", "width=300, height=300, titlebar=1,toolbar=0,scrollbars=yes,location=0,statusbar=0,menubar=0,resizable=0, screenX=120, left=120, screenY=120, top=120 ");
}
}
setTimeout( "panDuan(); ",1000);
}
tishi.jsp里得到新的信息,并更新数据库
思路就是这样的。
网上有很多XMLHttpRequest教程