我真的很感激能得到你的帮助,因为我似乎无法检测并解决我正在开发的网站上使用AJAX功能所遇到的问题。
我有一个webform
对一个处理程序(.ashx
)进行异步调用,该处理程序提供一个XML响应,该响应稍后由Javascript客户端函数处理,该函数将其内容放入用户 - 接口
我附上了我的处理程序生成的响应示例,我想知道的是如何获取所有<body>
元素innerHTML
(包含文本和子节点)要将其附加到用户界面上的<span>
元素的内容。任何人都可以帮我解决这个问题吗?
处理程序返回的XML响应(通过Firebug检查):
<message>
<content>
<messageId>2</messageId>
<from>Barack Obama</from>
<fromMail>barack.obama@whitehouse.gov</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函数,用于通过AJAX返回的数据影响用户界面innerHTML
属性:
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;
}
答案 0 :(得分:3)
你有正确的想法,但是你有语法错误。我测试过,发现问题出在预期的这条线上:
var ajaxRespondeBodyInnerHTML = msgReply.getElementsByTagName("body")[0].firstChild.nodeValue;
body
不在引号中。
有关工作示例,请参阅http://jsbin.com/ufubo/edit。
编辑:此外,如果您想在XML中使用HTML,则需要将内容嵌套在CDATA标记中。我已经更新了示例以显示此内容。
编辑:我已更新示例并保存了它...
答案 1 :(得分:0)
你能用
之类的东西吗?var ajaxRespondeBodyInnerHTML = msgReply.getElementsByTagName(body)[0].text;
或
var ajaxRespondeBodyInnerHTML = msgReply.getElementsByTagName(body)[0].innerHTML;
可能希望抓住里面的一切?
(自从我使用通过ajax返回的xml之后已经有一段时间了)