ajax返回xml的问题
服务器:
    XmlDataDocument xmlDoc = new XmlDataDocument(ds);
        Response.Write(xmlDoc.InnerXml);
        Response.End();在js里用:
    1:var xmlDoc = xmlHttp.responseTEXT;
      alert(xmlDoc);
   结果:<NewDateSet><Table><user_id>1</user_id><user_name>zjy</user_name></Table></NewDateSet>
        2:var xmlDoc = xmlHttp.responseXML;
          alert(xmlDoc);
      结果:[object]
    
        3: var xmlDoc = xmlHttp.responseXML.documentElement;
           alert(xmlDoc);
      结果:null
 
        4:var northNode = xmlDoc.getElementsByTagName.selectSingleNode('user_id')[0].firstChild.nodeValu; 
          alert(xmlDoc);      结果:出错,得不到结果 
问:1:现在要得到user_id的值如何做?
  2:要得到xml得所有值,并把它显示在table里就要怎么做?
     eg:    列1   列2
         1        zjy
    
请高手指教:另:qq群:19877329
  Mail: [email protected]欢迎加入群讨论软件相关事项。

解决方案 »

  1.   

    var xmlDoc = xmlHttp.responseXML.xml
      

  2.   

    qing2005() 
    var xmlDoc = xmlHttp.responseXML.xml
    返回是空的,什么都没有不过还是谢谢你了
      

  3.   

    <NewDateSet><Table><user_id>1</user_id><user_name>zjy</user_name></Table></NewDateSet>你也看到了阿~~~这个不是xml格式的啊,少了头部
    <?xml version="1.0" encoding="GB2312"?>
      

  4.   

    it_mpf(请不要挑战我的耐心!) ( ) 信誉:100    Blog   加为好友  2007-06-28 14:06:34  得分: 0  
     
     
       <NewDateSet><Table><user_id>1</user_id><user_name>zjy</user_name></Table></NewDateSet>你也看到了阿~~~这个不是xml格式的啊,少了头部
    <?xml version="1.0" encoding="GB2312"?>
      
     
    ---------------------------------------------------------------------------------
    DATASET本来返回的XML格式就是这个,什么少了头部,这和XML格式有什么关系
    LZ,我做了一个相册也是返回DATASET的XML格式,但用的方法是ds.GetXml(),不过返回的格式也是和LZ一样的到客户端要用一个对象来加载所有的XML字符,然后用childNodes[0].text如此类的方式就可以取得所有的节点数据了
      

  5.   

    少了个头部就不是xml格式了? str = “<sponsor_org name=’zwh’ age=’22’ />”var xmlDoc = new ActiveXObject("Msxml2.DOMDocument"); 
    xmlDoc.async=false; 
    xmlDoc.loadXML(str);  node = xmlDoc.selectSingleNode("//sponsor_org"); var node = xmlDoc.getElementsByTagName('sponsor_org')[0]; }
      

  6.   

    上面的方法都太烦了
    请求页的代码如下
    SqlDataAdapter da = new SqlDataAdapter("select * from PinPai", Exsql.con);
                DataSet ds = new DataSet("PinPai");
                da.Fill(ds);
    XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Response.ContentEncoding);
                writer.Formatting = Formatting.Indented;
                writer.Indentation = 4;
                writer.IndentChar = ' ';
                ds.WriteXml(writer);//ds为你的DATASET,本例中是从数据库PinPai表获取
                writer.Flush();
                Response.End();
                writer.Close();
    接收页:
    result = xmlHttp.responseText; 
    var oDoc = new ActiveXObject("MSXML2.DOMDocument"); 
    oDoc.loadXML(result); 
    var item=oDoc.selectNodes("//PinPai/Table/ID"); //Pinpai是DataSet名称
    上面的item即为ID
    如有不懂,可站内短信。
      

  7.   

    sp_xml_preparedocument
    sp_xml_removedocument
    这是sql2005里面的,你可以查一下具体用法,我们用的时候觉得很好用,可以直接解析xml格式。
    cool!
      

  8.   

    var xmlhttprequest;
        function CreateXMLhttpRequest()
        {
            xmlhttprequest = null;
            if(window.XMLHttpRequest)
                {
                     xmlhttprequest = new XMLHttpRequest(); //ff
                }
            else if(window.ActiveXObject)
                {
                    try
                    {
                        xmlhttprequest = new ActiveXObject("Msxml2.XMLHTTP");
                    }
                    catch(e)
                    {
                        try
                        {
                            xmlhttprequest = new ActiveXObject("Microsoft.XMLHTTP");
                        }
                        catch(e)
                        {}
                    }
                }
        }
    function CreateTable()
    {     
          CreateXMLhttpRequest();
          var url = "***.aspx";
          xmlhttprequest.open("GET",url,true);
          xmlhttprequest.send(null);
          var text = xmlhttprequest.responseText;
          var oDoc = new ActiveXObject("MSXML2.DOMDocument"); 
          oDoc.loadXML(text); 
          var id = oDoc.selectNodes('//id');
          var name = oDoc.selectNodes("//name");
          var table = document.createElement("table");
          table.style.border = "1px solid #33CC99";
          for(var i = 0;i<id.length;i++)
          {
              var tableRow = table.insertRow();
              tableRow.insertCell().innerHTML = id[i].firstChild.nodeValue ;
              tableRow.insertCell().innerHTML = name[i].firstChild.nodeValue ;
          }
          document.getElementById("div").appendChild(table);
    }
    <body>
        <form id="form1" runat="server">
            <div id="div">         
                <input type="button" value="测试" onclick="CreateTable()
    " />
            </div>
        </form>
    </body>
      

  9.   

    前两天也遇到这个问题,解决了,总结以下两点:
    1、必须保证异步请求的那个url 放在浏览器里可以访问,结果是个正确的XML格式,不能出现错误。
    所以服务端必须输出到页面如这样的内容:
    --------------------
    <?xml version="1.0" encoding="GB2312"?>
    <NewDateSet><Table><user_id>1</user_id><user_name>zjy</user_name></Table></NewDateSet>-------------
    这里的encoding="GB2312" 或 encoding="UTF-8" 都可以,我的XML文件中有中文,所以用了encoding="GB2312"2、服务器端输出时必须加上ContentType,我用ASP是这么写的:
    response.ContentType="text/xml"
    response.Charset="UTF-8"'
      

  10.   

    dataset输入的xml没有头部声明,就是下面的这行,所以不是xml,只是有xml的格式而已
    <NewDateSet><Table><user_id>1</user_id><user_name>zjy</user_name></Table></NewDateSet>
      

  11.   

    RunUpwind() 已经说得够明白了