【问题标题】:Refreshing div without page reload with ajax无需使用ajax重新加载页面即可刷新div
【发布时间】:2013-05-28 12:00:37
【问题描述】:

我正在使用以下代码来刷新包含 cmets 的 div,但有些东西无法正常工作。

60 秒后刷新 div,刷新后显示 0(每 10 秒左右闪烁或类似的东西),而不是更新评论列表。我不知道..

通过检查源页面没有发现任何错误。

function ajax_com(){
  var xmlHttp;
  try{   
    xmlHttp=new XMLHttpRequest();
  }catch (e){
    try{
        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    }catch (e){
        try{
            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }catch (e){
            alert("No AJAX!?");
            return false;
        }
    }
  }
  xmlHttp.onreadystatechange=function(){
    document.getElementById("tble").innerHTML=xmlHttp.responseText;
    setTimeout('ajax_com()',60000);
  }
  var data = "action=ajax_com";
  xmlHttp.open("POST","http://wwwsite.com/wp-admin/admin-ajax.php",true);
  xmlHttp.send(data);
}
window.onload=function(){
  setTimeout('ajax_com()',60000);
}

【问题讨论】:

  • 能否请您将 html 添加到问题中?
  • 评论 1comment2

标签: javascript ajax refresh


【解决方案1】:

问题是xmlHttp.responseText0 或为空。

您的 ajax 没有返回任何数据,是吗?尝试使用Firebug 来查看它是否真的返回任何数据。另外,返回的数据可能是结构化的,因此您必须解析响应数据并相应地显示具有不同属性的 cmets,例如海报名称、图片、实际评论等。

【讨论】:

    【解决方案2】:

    这是你使用onreadystatechange这个方法在多个状态变化时触发的。

    您需要检查 xmlHttp.readyState 属性上的 4th 状态,即 finished 状态,如下所示:

    xmlHttp.onreadystatechange=function(){
      if (xmlHttp.readyState === 4) {
        document.getElementById("tble").innerHTML=xmlHttp.responseText;
        setTimeout('ajax_com()',60000);
      }
    }
    

    您可能还想查看xmlHttp.status,它是这样的 200:

    if (xmlHttp.readyState === 4 && xmlHttp.status === 200) {
     ...
    }
    

    【讨论】:

    • 好吧,我已经添加了 sh0ber 所说的内容,但我没有刷新。添加您的代码后,它会再次刷新,但仍会输出 0
    • 按照 Jay Patel 的建议,尝试使用 firebug。如果您不确定如何使用它,只需添加 alert(xmlHttp.responseText);就在“if”语句之前。
    • 第一次它返回空第二次 0,我正在寻找谷歌的解决方案,但到目前为止我没有看到任何解决方案
    • 好的,然后做同样的事情,但是使用 alert(xmlHttp.status);告诉我你得到了什么
    • 在尝试了不同的方法后,我发现代码有效。我已经用实际页面替换了“wwwsite.com/wp-admin/admin-ajax.php”,我试图在“mysite.com/news”中实现此代码,但现在在 div 中我试图刷新我让整个页面“新闻”刷新并且没有要刷新的漏洞页面,我仍然不知道该怎么办
    最近更新 更多