ajax返回xml的问题

felix3118 2007-06-28 01:35:11
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: yufan27209@qq.com

欢迎加入群讨论软件相关事项。
...全文
1656 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuan_2004 2009-01-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 it_mpf 的回复:]
<NewDateSet> <Table> <user_id> 1 </user_id> <user_name> zjy </user_name> </Table> </NewDateSet>

你也看到了阿~~~这个不是xml格式的啊,少了头部
<?xml version= "1.0 " encoding= "GB2312 "?>
[/Quote]

对,就是少了个头定义。
大个啊 2007-06-29
  • 打赏
  • 举报
回复
RunUpwind() 已经说得够明白了
showrock 2007-06-29
  • 打赏
  • 举报
回复
dataset输入的xml没有头部声明,就是下面的这行,所以不是xml,只是有xml的格式而已
<NewDateSet><Table><user_id>1</user_id><user_name>zjy</user_name></Table></NewDateSet>
RunUpwind 2007-06-29
  • 打赏
  • 举报
回复
前两天也遇到这个问题,解决了,总结以下两点:
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"'
showrock 2007-06-29
  • 打赏
  • 举报
回复
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>
showrock 2007-06-28
  • 打赏
  • 举报
回复
学习!!!!!!!!!!!!!!
shixiangzb007 2007-06-28
  • 打赏
  • 举报
回复
sp_xml_preparedocument
sp_xml_removedocument
这是sql2005里面的,你可以查一下具体用法,我们用的时候觉得很好用,可以直接解析xml格式。
cool!
comeon_data 2007-06-28
  • 打赏
  • 举报
回复
上面的方法都太烦了
请求页的代码如下
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
如有不懂,可站内短信。
net_lhb 2007-06-28
  • 打赏
  • 举报
回复
帮你顶关注!
edwardfay 2007-06-28
  • 打赏
  • 举报
回复
少了个头部就不是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]; }
BookSirSwordsMan 2007-06-28
  • 打赏
  • 举报
回复
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如此类的方式就可以取得所有的节点数据了
jinpeng_dotnet 2007-06-28
  • 打赏
  • 举报
回复
才刚接触AJAX关注下!
it_mpf 2007-06-28
  • 打赏
  • 举报
回复
<NewDateSet><Table><user_id>1</user_id><user_name>zjy</user_name></Table></NewDateSet>

你也看到了阿~~~这个不是xml格式的啊,少了头部
<?xml version="1.0" encoding="GB2312"?>
felix3118 2007-06-28
  • 打赏
  • 举报
回复
qing2005()
var xmlDoc = xmlHttp.responseXML.xml
返回是空的,什么都没有

不过还是谢谢你了
pt1314917 2007-06-28
  • 打赏
  • 举报
回复
不太懂这个。顶下先```
关注~~
qing2005 2007-06-28
  • 打赏
  • 举报
回复
var xmlDoc = xmlHttp.responseXML.xml

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧