Ajax提示新消息的问题

happyfmy 2010-04-01 02:04:17
会员有新消息的话,给出提示。现在问题是我在Firefox下运行良好,在IE下不能显示。
贴出代码:
JS:
window.onload = initAll;

var xmlhttp;
var time = 500;

function initAll() {
refresh();
}

function refresh() {
if (window.XMLHttpRequest) {
// 针对FireFox,Mozillar,Opera,Safari,IE7,IE8
xmlhttp = new XMLHttpRequest();

if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType("text/xml");
}
} else if (window.ActiveXObject) {
// 针对IE5,IE5.5,IE6
var activexName = [ "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ];

for ( var i = 0; i < activexName.length; i++) {
try {
xmlhttp = new ActiveXObject(activexName[i]);
break;
} catch (e) {
}
}
}
xmlhttp.onreadystatechange = callback;
xmlhttp.open("GET", "checkNewMessage", true);
xmlhttp.send(null);
}
function blink() {
var spanNode = document.getElementById("result");
spanNode.style.visibility = (spanNode.style.visibility == "hidden") ? "visible":"hidden";
setTimeout("blink()", time);
}

function callback() {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
var responseText = xmlhttp.responseText;
var spanNode = document.getElementById("result");
spanNode.innerHTML = responseText;
setTimeout("refresh()", 120000);
setTimeout("blink()", time);
}

}
}




JSP:
<span id="result" style="color:red; visibility:hidden"></span>
...全文
308 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
happyfmy 2010-04-03
  • 打赏
  • 举报
回复
这个诡异的IE,现在竟然好了 谢谢各位 结贴
happyfmy 2010-04-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 net_lover 的回复:]

另外检查浏览器是否报告了脚本错误。
另外,另外再检查是否别的代码干扰了
[/Quote]

我网上查了 有种说法是ie在页面载入完之前就会调用window.onload
而ff则是页面载入完后才会onload 是不是这个有关系
happyfmy 2010-04-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 showbo 的回复:]

有可能是IE下的缓存,try
XML code
xmlhttp.open("GET", "checkNewMessage?_dc="+new Date().getTime(), true);


而且建议判断下是否成功创建了xhr对象,ie下你acx只判断了2个,有可能ie下未成功创建xhr对象
JScript code
if(xmlhttp){
xmlhttp.onreadysta……
[/Quote]

试了 不行啊 大哥 xmlhttp是创建成功的 我现在的问题是登陆后首页不能显示提示消息 然后点进去 就会显示,而且把新消息给删了或者看过以后 还是提示有新消息 逻辑肯定没问题 在Firefox下一点问题都没有
孟子E章 2010-04-02
  • 打赏
  • 举报
回复
另外检查浏览器是否报告了脚本错误。
另外,另外再检查是否别的代码干扰了
孟子E章 2010-04-02
  • 打赏
  • 举报
回复
我使用url="xx.jsp"自己测试的页面是通过的
fancy161 2010-04-02
  • 打赏
  • 举报
回复
<script type="text/javascript">

function ajaxFunction()
{
var xmlHttp;

try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{

// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{

try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("您的浏览器不支持AJAX!");
return false;
}
}
}
}
</script>

用上面的方法实例化 XMLHttpRequest试下
Go 旅城通票 2010-04-02
  • 打赏
  • 举报
回复
有可能是IE下的缓存,try
xmlhttp.open("GET", "checkNewMessage?_dc="+new Date().getTime(), true);


而且建议判断下是否成功创建了xhr对象,ie下你acx只判断了2个,有可能ie下未成功创建xhr对象
if(xmlhttp){
xmlhttp.onreadystatechange = callback;
xmlhttp.open("GET", "checkNewMessage", true);
xmlhttp.send(null);
}
else alert('浏览器不支持xhr对象!');
真哥哥 2010-04-02
  • 打赏
  • 举报
回复
在ie和Firefox下XMLHTTP是有区别的:
在ie下:
if (window.ActiveXObject) // code for IE
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP") ;
...
}
在Firefox下才是:
if (window.XMLHttpRequest) //mf
{
xmlhttp=new XMLHttpRequest();
...
}
happyfmy 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 net_lover 的回复:]
ie6,ie8测试没问题啊
[/Quote]

我是struts2返回结果是个字符串 然后显示出来 可是为什么Firefox行 什么IE 世界之窗的 都不行
happyfmy 2010-04-01
  • 打赏
  • 举报
回复
真的假的啊 我就是不行
孟子E章 2010-04-01
  • 打赏
  • 举报
回复
ie6,ie8测试没问题啊

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧