1

我想每五秒在我的页面中动态重新加载一个 div。但在我的回复中,我得到了整个页面的内容......我怎样才能只得到指定 div 的内容?

<script>
function ajaxrefresh()
{
    var xmlhttp;

    if (window.XMLHttpRequest)
    {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    }
    else
    {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            //Here i want only the content for the div from the response       
            document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
        else
        {
            //alert("state: "+xmlhttp.readyState)
            //alert("status: "+xmlhttp.status)
        }
    }

    xmlhttp.open("GET","http://${localHostAddress}:8080/adress",true);
    xmlhttp.send();

    var t=setTimeout(ajaxrefresh,5000);
}

window.load = ajaxrefresh();
</script>
4

4 回答 4

1

有人已经在SO上问过这样的问题。最佳投票是在您的页面中创建一个不可见的 div,并用 AJAX 响应填充它,以便能够使用hiddenDiv.getElementById("myDiv").

于 2013-05-16T07:11:46.490 回答
1

由于您不能使用 Jquery,我认为您最好的选择是响应 ajax 调用仅返回来自服务器端的 div 内容。这样你的响应大小会更小,因此也会更快......

如果您无法更改请求的响应,请使用以下代码

if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
  //Here i want only the content for the div from the response  
  var mydiv= document.getElementById("myDiv"); 
  var doc=document.createElement("div");
  doc.innerHTML=xmlhttp.responseText;
  document.body.appendChild(doc); // Note append temp to document
 mydiv.innerHTML=doc.getElementById("theDivYouWant")
    .innerHTML;
  document.body.removeChild(doc);// Note remove temp from document
于 2013-05-16T07:27:45.543 回答
0

你可以尝试这样的事情:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
  //Here i want only the content for the div from the response  
  var doc=document.createElement("div");
  doc.innerHTML=xmlhttp.responseText;
  document.getElementById("myDiv").innerHTML=doc.getElementsByTagName("div")[5]
    .innerHTML

这里 5 只是一个随机数,如果 div 始终是固定的,则可以使用 div 所在的数字,如果不是,则需要遍历 div 并找到您要查找的数字(可能基于 id) .

于 2013-05-16T07:11:14.613 回答
0

可能你会从下面的脚本中得到一些想法:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>

<script type="text/javascript">
       var auto_div_refresh = setInterval(function(){
   $('#load_data').load('fb_count.php').fadeIn("slow");
}, 10000); // refresh every 10000 milliseconds
</script>
于 2013-05-16T07:16:43.263 回答