|
锁定老贴子 主题:运用AJAX实现右下角弹出提示框 示例
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-08-20 关键字: 提示框 示例 弹出框
JS文件内容
//定义XMLHttp实例
var xmlHttp;
function createXMLHttpRequest(){
//开始初始化XMLHttpRequest对象
if(window.ActiveXObject){
//IE浏览器
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest){
//Mozilla浏览器
xmlHttp = new XMLHttpRequest();
}
if(xmlHttp){
//设置请求地址
xmlHttp.open("GET","message.do?cmd=get",true);
xmlHttp.onreadystatechange=setState;//设置回调函数
xmlHttp.send(null);
}
}
//回调函数
function setState(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
parseResults(xmlHttp.responseXML)
}
}
}
/*处理XML*/
function parseResults(xmlDOM) {
try{
var root = xmlDOM.documentElement;
var info = root.getElementsByTagName('message');
var out = "";
var message = null;
var current = null;
for(var i=0;i<info.length;i++){
message = info[i];
id = message.getElementsByTagName("id")[0].firstChild.data;
title = message.getElementsByTagName("title")[0].firstChild.data;
out=out+(i+1)+"."+"<a style=\"font-size:12px; color: #6D93C8; face: Tahoma\" title='内容提要:\n"
+title
+"\n时间:"
+title
+"'"+" href=# >"
+title
+"</a><BR>";
}
popmsg("<BR>"+out);
}catch(exception){
// alert("出错了!");
}
}
/*右下角提示框*/
var oPopup = window.createPopup();
var popTop=50;
function popshow(){
oPopup.show(screen.width-250,screen.height-popTop,241,172);
}
function pophide(){
oPopup.hide();
}
function popmsg(msgstr){
var winstr="<table valign=\"top\" style=\"border: 1 solid #6D93C8\" width=\"241\" height=\"172\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" >";
winstr+="<tr><td bgcolor=\"#BCCCDF\" onClick=\"parent.pophide();\" valign=\"top\" align=\"center\" height=\"20\" style=\"font-size:14px; color: #6D93C8; face: Tahoma;filter:Blur(add=1,direction=45,strength=8) \">你有新短消息:</td></tr><tr><td valign=\"top\" align=\"center\"><table valign=\"top\" width=\"90%\" height=\"110\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
winstr+="<tr><td valign=\"top\" style=\"font-size:12px; color: #6D93C8; face: Tahoma\">"+msgstr+"</td></tr></table></td></tr></table>";
oPopup.document.body.innerHTML = winstr;
popshow();
setInterval('window.focus()',0); //让IE重获取焦点
}
/*提示间隔时间*/
var secs=5;//第一次提示时间秒
function checkServer(secs){
for(i=1;i<=secs;i++) {
window.setTimeout("update(" + i + ")", i * 1000);
}
}
function update(num) {
if(num == secs) {
createXMLHttpRequest();
secs=1*60;//提示时间秒
for(i=1;i<=secs;i++) {
window.setTimeout("update(" + i + ")", i * 1000);
}
}
else {
printnr = secs-num;
}
}
checkServer(secs);
请求的XML内容 <?xml version="1.0" encoding="UTF-8"?> <messages> <message> <id>001</id> <title>通知你今天来开会</title> </message> </messages> 如果XML要动态生成则用下面代码
<%@ page import="java.util.List,com.sunflower.model.Message" contentType="text/xml;charset=utf-8"%>
<%
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
List list = (List)request.getAttribute("messages");
out.println("<messages>");
if(list!=null)
for(int i=0;i<list.size();i++){
Message objM = (Message)list.get(i);
out.println("<message>");
out.println("<id>"+objM.getId()+"</id>");
out.println("<title>"+objM.getTitle()+"</title>");
out.println("</message>");
}
out.println("</messages>");
%>
HTML文件内容 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>右下角弹出提示</title> </head> <script type="text/javascript" src="ajax.js"></script> <body> <input type="button" onclick="createXMLHttpRequest()" value="测试请求" /> <div id="contain"></div> </body> </html> 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-08-22
message.getElementsByTagName("id")[0].firstChild.data
为什么取不了值啊 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-22
message.getElementsByTagName("id")[0].firstChild.data
为什么取不了值啊 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-23
这个程序有问题吗?
|
|
| 返回顶楼 | |
|
最后更新时间:2007-08-23
程序是可以正常运行的
xmlHttp.open("GET","message.do?cmd=get",true);
把 message.do?cmd=get 换成一个可以通可URL访问XML的路径如http://127.0.0.1:8080/messages.xml 即可看到效果 |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-23
我用xmlHttp.open("GET","message.xml",true);
用alert(xmlHttp.responseText)可以得到XML内容,但是xmlHttp.responseXML就得不到内容 而且alert(xmlHttp.responseXML.documentElement)值为null,如果再取标签的具体内容的话就有错误(对象为空或不支持该方法),为什么啊.... |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-24
还不错,我不喜欢用xml,用json更好一些。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-08-24
xmlHttp.responseText是以文本方式获取反回的内容
xmlHttp.responseXML 是以XML对象的方式获取 对象用alert(xmlHttp.responseXML);只能显示为[Object]
//从XML对象中获取根元素
var root = xmlDOM.documentElement;
//取XML对象中的所有message节点
var info = root.getElementsByTagName('message');
|
|
| 返回顶楼 | |
|
最后更新时间:2007-08-24
ye_jinghua 写道 xmlHttp.responseText是以文本方式获取反回的内容
xmlHttp.responseXML 是以XML对象的方式获取 对象用alert(xmlHttp.responseXML);只能显示为[Object] 这个我知道啊,但是我的意思是var root = xmlDOM.documentElement; root的值都为null了,下面的式子var info = root.getElementsByTagName('message'); 就提示出错啦,因为root对象为null啊! |
|
| 返回顶楼 | |
|
最后更新时间:2007-08-24
第一次用ajax,表面看来又不难学,就是第一测试就不能通过,郁闷
|
|
| 返回顶楼 | |





