2009-08-16 67 views
0

我真的很感激得到你的帮助,因为我似乎无法检测和解决我在使用我正在开发的网站上的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; 
} 

回答

3

你有正确的想法,但你有一个语法错误。我测试,发现问题是这一行预期:

var ajaxRespondeBodyInnerHTML = msgReply.getElementsByTagName("body")[0].firstChild.nodeValue; 

body不加引号。

查看http://jsbin.com/ufubo/edit的工作示例。

编辑:另外,如果你想在你的XML中使用HTML,你需要将你的内容嵌套在CDATA标签中。我已更新示例以显示此内容。

编辑:我更新的例子保存它...

+0

谢谢你的回复。但是,您的解决方案似乎并没有达到我想要的效果,因为它不显示“" element of my XML AJAX response, not only the "" node value. – XpiritO 2009-08-19 16:04:12

+0

See my edit for the solution to your answer. – 2009-08-20 19:17:47

+0

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

0

您能否使用类似

var ajaxRespondeBodyInnerHTML = msgReply.getElementsByTagName(body)[0].text; 

var ajaxRespondeBodyInnerHTML = msgReply.getElementsByTagName(body)[0].innerHTML; 

那可能有希望抓住一切?

(它已经一段时间,因为我已经通过AJAX返回的XML工作)

+0

没有您的建议似乎工作。不过,谢谢你的回复。 – XpiritO 2009-08-19 16:00:35