AJAX仅显示XML的一部分

时间:2013-08-12 11:38:31

标签: javascript jquery xml ajax

我有这个代码来调用AJAX:

function loadXml(b,c)
{
var xmlhttp;
var x,xx,i;
var txt = "";
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)
    {
    x=xmlhttp.responseXML.documentElement.getElementsByTagName("POST");
    for (i=0;i<x.length;i++)
      {
      xx=x[i].getElementsByTagName("TITLE");
        {
        try
          {
          txt=txt + "<span class='nphead'>" + xx[0].firstChild.nodeValue + "</span><div class='divider'><div class='divtop'></div><div class='divbot'></div></div><br>";
              }
        catch (er)
          {
          txt=txt + "<span class='nphead'> </span><div class='divider'><div class='divtop'></div><div class='divbot'></div></div>";
          }
        }
      xx=x[i].getElementsByTagName("CONTENT");
        {
        try
          {
          txt=txt + "<p class='pcontent'>" + xx[0].firstChild.nodeValue + "</p>";
          }
        catch (er)
          {
          txt=txt + "<p> </p><div class='divider'><div class='divtop'></div><div class='divbot'></div></div>";
          }
        }
      }
    document.getElementById(c).innerHTML=txt;
    }
  }
xmlhttp.open("GET",b,true);
xmlhttp.send();
}

如果功能是onLoad="loadXML('content.xml', 'divId')" 例如,这是我的content.xml:

<BLOG>
    <POST>
        <TITLE><![CDATA[<a class="normal" href="">1st title</a>]]></TITLE>
        <CONTENT>
        1st
        </CONTENT>
    </POST>

    <POST>
        <TITLE><![CDATA[<a class="normal" href="">2nd title</a>]]></TITLE>
        <CONTENT>
        2nd
        </CONTENT>
    </POST>

    <POST>
        <TITLE><![CDATA[<a class="normal" href="">3rd title</a>]]></TITLE>
        <CONTENT>
        3rd
        </CONTENT>
    </POST>
</BLOG>

例如,我的XML中有大约10个<POST>个标签,所以这里是: 我的问题:如何才能显示第二个<POST>代码,而不显示其他代码?

我已经尝试用DIV包装<POST>的内容并尝试了这个jQuery代码,但是这没有用:

$(window).load(function() {
$('div.bpost').filter(
    function(){
        return !$('div.bpost').eq(2);
    }).css('display','none');
});

**似乎JavaScript 使用XML中的ajax内容。 **

2 个答案:

答案 0 :(得分:0)

试试这个 http://www.javascriptkit.com/dhtmltutors/ajaxgetpost3.shtml

var xmldata=mygetrequest.responseXML ;
   var rssentries=xmldata.getElementsByTagName("POST")[1];

答案 1 :(得分:0)

试试这个。它的工作。

function loadXMLDoc(b,c)
{
var xmlhttp;
var txt,x,xx,i;
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)
    {
    txt="<table border='1'><tr><th>Title</th><th>Artist</th></tr>";
    x=xmlhttp.responseXML.documentElement.getElementsByTagName("POST");

      txt=txt + "<tr>";
      xx=x[1].getElementsByTagName("TITLE");
        {
        try
          {
          txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";
          }
        catch (er)
          {
          txt=txt + "<td> </td>";
          }
        }
      xx=x[1].getElementsByTagName("CONTENT");
        {
        try
          {
          txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";
          }
        catch (er)
          {
          txt=txt + "<td> </td>";
          }
        }
      txt=txt + "</tr>";

    txt=txt + "</table>";
    document.getElementById('divId').innerHTML=txt;
    }
  }
xmlhttp.open("GET","content.xml",true);
xmlhttp.send();
}