分页的原始脚本

时间:2010-01-31 14:06:17

标签: php javascript pagination

这是我的分页脚本,我想知道为什么我在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

4 个答案:

答案 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");
}

希望这是你头痛的根源。