这是我的分页脚本,我想知道为什么我在IE中遇到这些错误:
function GetXmlHttpObject(){
var a;
try{
a=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(d){
try{
a=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(c)
{a=false;}
}
if(!a&&typeof XMLHttpRequest!="undefined")
{
try{
var a=new XMLHttpRequest();
}
catch(d){
var a=false;
}
}
return(a);
}
var i=0;var ii=0;var b=0;var bb=0;
function ForumPagination(c){
document.getElementById("forumsblock").style.display="none";
document.getElementById("WaitDiv").innerHTML="<img src='images/loading.gif' >";
xmlHttp=GetXmlHttpObject();
if(xmlHttp==null){
alert("Your browser does not support AJAX!");
return;
}
var a="indext.php?name=Dynamic_forums&pagenum="+c;
xmlHttp.open("GET",a,true);xmlHttp.onreadystatechange=ReplyLoading;xmlHttp.send(null);
}
function ReplyLoading(){
if(xmlHttp.readyState==2||xmlHttp.readyState==4){
var a=xmlHttp.responseText;
document.getElementById("WaitDiv").innerHTML=""+a;
}
}
脚本在FF中工作正常
顺便说一句,当我改变页面时,我又无法再这样做了。
网页错误详情
消息:'getLoad'未定义行: 105字符:311代码:0 URI: http://nukelearn.com/
消息:必要的数据 完成此操作尚未完成 可用。
行:9个字符:74代码:0 URI: http://nukelearn.com/includes/199233334JOE.js
消息:需要对象行:3个字符: 1代码:0 URI: http://nukelearn.com/includes/199233334JOE.js
消息:需要对象行:3个字符: 1代码:0 URI: http://nukelearn.com/includes/199233334JOE.js
消息:需要对象行:3个字符: 1代码:0 URI: http://nukelearn.com/includes/199233334JOE.js
消息:需要对象行:3个字符: 1代码:0 URI: http://nukelearn.com/includes/199233334JOE.js
消息:需要对象行:3个字符: 1代码:0 URI: http://nukelearn.com/includes/199233334JOE.js
消息:需要对象行:3个字符: 1代码:0 URI: http://nukelearn.com/includes/199233334JOE.js
消息:需要对象行:3个字符: 1代码:0 URI: http://nukelearn.com/includes/199233334JOE.js
答案 0 :(得分:4)
帮自己一个忙,并使用jQuery:您将不再需要处理浏览器特定问题(至少对于javascript)
答案 1 :(得分:1)
第一个错误是由于您页面中的此声明:
window.onload = getLoad;
没有getLoad函数,这就是发生错误的原因。该错误并非特定于IE,无论浏览器存在同样的问题。
第二组错误是由对XmlHttp中不同readyState值的含义的误解引起的。这一行就是问题所在:
if(xmlHttp.readyState==2||xmlHttp.readyState==4){
引用MSDN文档,readyState 2是:
2(已发送)已发送send方法 调用。 responseText不可用。 responseBody不可用。
您似乎正在处理readyState 2作为请求已完成(然后尝试使用responseText属性),我期望这是导致问题的原因。将该行更改为:
if(xmlHttp.readyState==4){
有关不同readyState值的讨论,请参阅此question(摘要:仅使用4)。
要重申其他答案所说的内容,请使用jQuery或至少另一个较小的库来抽象出跨浏览器的XmlHttp nastiness。
答案 2 :(得分:0)
我同意@kemp。如果你使用jQuery,你的所有问题都会消失。
这是jQuery的分页插件,可以满足您的需求。
http://tympanus.net/codrops/2009/11/17/jpaginate-a-fancy-jquery-pagination-plugin/
答案 3 :(得分:0)
用第一个函数替换:
function GetXmlHttpObject(){
return !!window.XMLHttpRequest ? window.XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
}
希望这是你头痛的根源。