AJAX XML回复节点值迭代
我真的很感激得到你的帮助,因为我似乎无法检测和解决我在使用我正在开发的网站上的AJAX功能所遇到的问题。AJAX XML回复节点值迭代
我有一个webform
,它对处理程序(.ashx
)进行异步调用,该处理程序提供XML响应,稍后由将其内容放入用户界面的Javascript客户端函数进行处理。
我附上我的处理程序生成的响应的一个例子,我想知道什么是我能得到的所有<body>
元素innerHTML
(与文本和子节点)的内容将其追加到<span>
元素在用户界面上。任何人都可以帮我解决这个问题吗? (通过萤火虫选中)由处理程序返回
XML响应:
<message>
<content>
<messageId>2</messageId>
<from>Barack Obama</from>
<fromMail>[email protected]</fromMail>
<subject>Yes, we can... get World Peace</subject>
<body>Hello, dear citizen. I'm sending you this message to invite you to join us! <a href="http://www.whitehouse.gov">Test link</a> Thank you for your time.</body>
</content>
</message>
客户端JavaScript功能以影响用户界面innerHTML
属性与数据经由AJAX返回:
function GetMessageContentsCallback(args, resp) {
//XML Parser
try {
//Internet Explorer
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = "false";
xmlDoc.loadXML(resp);
}
catch (e) {
parser = new DOMParser();
xmlDoc = parser.parseFromString(resp, "text/xml");
}
var msgReply = xmlDoc.getElementsByTagName('message')[0];
var ajaxRespondeBodyInnerHTML = msgReply.getElementsByTagName(body)[0].firstChild.nodeValue;
//this currently only delivers inner text content, without the <a href... bit and subsequent text
document.getElementById("bodySpan").innerHTML = ajaxRespondeBodyInnerHTML;
}
你有正确的想法,但你有一个语法错误。我测试,发现问题是这一行预期:
var ajaxRespondeBodyInnerHTML = msgReply.getElementsByTagName("body")[0].firstChild.nodeValue;
body
不加引号。
查看http://jsbin.com/ufubo/edit的工作示例。
编辑:另外,如果你想在你的XML中使用HTML,你需要将你的内容嵌套在CDATA标签中。我已更新示例以显示此内容。
编辑:我更新的例子和保存它...
您能否使用类似
var ajaxRespondeBodyInnerHTML = msgReply.getElementsByTagName(body)[0].text;
或
var ajaxRespondeBodyInnerHTML = msgReply.getElementsByTagName(body)[0].innerHTML;
那可能有希望抓住一切?
(它已经一段时间,因为我已经通过AJAX返回的XML工作)
没有您的建议似乎工作。不过,谢谢你的回复。 – XpiritO 2009-08-19 16:00:35
谢谢你的回复。但是,您的解决方案似乎并没有达到我想要的效果,因为它不显示“" element of my XML AJAX response, not only the "" node value. – XpiritO 2009-08-19 16:04:12
See my edit for the solution to your answer. – 2009-08-20 19:17:47
Thanks again for your reply, but your solution doesn't seem to accomplish what I want, as I would like to display ALL node and child nodes content on the placeholder. In the end I would like to have this: placeholder.innerHTML = "Hello, dear citizen. I'm sending you this message to invite you to join us! Test link谢谢您的时间。” 感谢您的帮助;) – XpiritO 2009-08-24 13:37:33