如果数据中不包括<br>、&nbsp;符号可正确返回数据,但如果数据中包括<br>、&nbsp;这些符号,用results[0].getElementsByTagName("content")[0].firstChild.data提取数据就会显示错误“0为空或不是对象”。怎么办呢?是在做一个新闻系统的详细内容显示功能。

解决方案 »

  1.   

    搜索结果集合
    results=xmlResult.getElementsByTagName("result");
      

  2.   

    多贴写代码怕什么???
    不知道你的dom结构 如何分析??? 只能告诉你getElementsByTagName没有取道
      

  3.   

    不怕呀,我可以把代码给你发过去。。我说了如果数据中包括 <br> 、&nbsp;这些符号就取不到。。服务器:
    XML_Result="<?xml version=""1.0"" encoding=""gb2312""?><blogsearch>"
    IF Search_Word<>Empty Then
    ' 创建查询SQL语句
    sqlSearch="SELECT log_ID,log_Title,log_Content FROM blog_Content WHERE log_Title LIKE '%"&Search_Word&"%'"
    ' 打开记录集
    rsSearch.open sqlSearch,Conn,1,1
    ' 如果没有搜索结果就产生一个结果,logid为#,标志着没有搜索结果
    IF rsSearch.BOF AND rsSearch.EOF Then XML_Result=XML_Result&"<result><log_id>#</log_id></result>"
    ' 循环输出搜索结果
    Do While Not rsSearch.EOF
    XML_Result=XML_Result&"<result><log_id>"&rsSearch("log_ID")&"</log_id><log_title>"&rsSearch("log_Content")&"</log_title></result>"  ' 循环输出每一个结果 rsSearch.MoveNext
    Loop
    Else
    ' 关键字为空,则返回无搜索结果
    XML_Result=XML_Result&"<result><logid>#</logid></result>"
    End IF
    XML_Result=XML_Result&"</blogsearch>"
    ' 设置MIME Type为XML文档
    Response.ContentType = "text/xml"
    Response.CharSet = "gb2312"
    ' 输出搜索结果
    Response.Write(XML_Result)
    JS:
        xmlObj.open ("POST", "ajaxsearch.asp", true);
        // 设置请求头,表单内容格式为URLEncoded
        xmlObj.setRequestHeader("Content-Type ","application/x-www-form-urlencoded ");
        // 设置完成请求后响应函数
        xmlObj.onreadystatechange=function() {
            // 完成响应
            if(xmlObj.readyState==4) {
                // 状态正常
                if(xmlObj.status==200) {
                    // 设置xmlResult为搜索结果XML文档
                    xmlResult=xmlObj.responseXML;
                    // 调用AjaxShowResult()显示搜索结果
                    AjaxShowResult();
     function AjaxShowResult() {
        if(results[0].getElementsByTagName("log_id")[0].firstChild.data=="#")
            // 是空,则显示没有符合的搜索结果
         
       strTemp=strTemp+"<li>无搜索结果</li>";
       
     else
          // 循环输出每个搜索结果
            for(i=0;i<results.length;i++)
     strTemp = strTemp + "<li><a href='blogview.asp?log_ID=" + results[i].getElementsByTagName("log_id")[0].firstChild.data + "'>" + results[i].getElementsByTagName("log_title")[0].firstChild.data + "</a></li>"; 
       
     strTemp=strTemp+"</ul>";
                .innerHTML = strTemp
    }
      

  4.   

    results[0].getElementsByTagName( "content ")[0].firstChild.data var a=.....results[0];
    var b=a.....
      

  5.   

    发你的代码,还不如直接把你输出的xml字串粘上来,看都看的烦.content节点,当内容中含有<br>,&nbsp;时,xml文档就不正确了.
    <,>,",',&都是xml的特殊字符.要么你将其转义,要么在content节点将内容用cdata标记.
    &lt;&gt;&apos;&quot;&amp;除了用xmlhttp外,也可以直接在 js 里用xmldom去操作. 
    var xmldoc=new ...;
    xmldoc.load("ajaxsearch.asp");
    ...主要还是因为content里特殊字殊的原因. 这样返回的内容不是标准的xml文档,你再用xml的方法去取它,当然报错了.