【问题标题】:original script for pagination分页的原始脚本
【发布时间】:2011-01-11 10:20:41
【问题描述】:

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

【问题讨论】:

  • 您可以考虑发布带有换行和缩进的代码吗?
  • 添加了换行和缩进,使代码可读性模糊

标签: php javascript pagination


【解决方案1】:

帮自己一个忙并使用jQuery:您将不再需要处理特定于浏览器的问题(至少对于 javascript)

【讨论】:

  • jQuery缩小版为23KB
  • farshad:取决于您对时间的重视程度,23KB 似乎很划算,再也不用担心这些东西了
【解决方案2】:

我同意@kemp。如果你使用 jQuery,你所有的问题都会迎刃而解。

这是一个jQuery分页插件,应该可以满足你的需求。

http://tympanus.net/codrops/2009/11/17/jpaginate-a-fancy-jquery-pagination-plugin/

【讨论】:

  • 谢谢,不要让我感到遗憾,我知道如何使用 jquery 分页,但这是例外,我需要找出错误而不是忘记我的问题
【解决方案3】:

将您的第一个函数替换为:

function GetXmlHttpObject(){
    return !!window.XMLHttpRequest ? window.XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");
}

希望这是你头痛的根源。

【讨论】:

  • 谢谢,那是一些东西,但 nop 不适用于您的代码
  • 这似乎在功能上与现有代码相同(除了它不检查 Msxml2.XMLHTTP)。
【解决方案4】:

您的第一个错误是因为您页面中的以下语句:

window.onload = getLoad;

没有 getLoad 函数,这就是发生该错误的原因。该错误也不是特定于 IE 的,无论使用哪种浏览器都存在相同的问题。

第二组错误是由于误解了 XmlHttp 中不同的 readyState 值的含义。这一行是问题:

if(xmlHttp.readyState==2||xmlHttp.readyState==4){

引用 MSDN 文档,readyState 2 是:

2 (Sent) 发送方法已经 叫。 responseText 不可用。 responseBody 不可用。

您似乎将 readyState 2 视为请求已完成(然后尝试使用 responseText 属性),我认为这是导致问题的原因。将该行更改为:

if(xmlHttp.readyState==4){

请参阅question,了解有关不同 readyState 值的讨论(总结:只使用 4)。

重申其他答案所说的内容,使用 jQuery 或至少另一个较小的库来抽象出跨浏览器 XmlHttp 的讨厌。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 2012-08-21
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    相关资源
    最近更新 更多