AJAX在段落上被截断
当我试图用来自AJAX的两段文本更新div时,遇到了一个奇怪的问题 以下是我正在使用的函数:AJAX在段落上被截断,ajax,Ajax,当我试图用来自AJAX的两段文本更新div时,遇到了一个奇怪的问题 以下是我正在使用的函数: var receivePapers = getXmlHttpRequestObject(); function get_papers(myCat){ if (receivePapers.readyState == 4 || receivePapers.readyState == 0) { receivePap
var receivePapers = getXmlHttpRequestObject();
function get_papers(myCat){
if (receivePapers.readyState == 4 || receivePapers.readyState == 0) {
receivePapers.open("GET", 'http://server/path/tocode/file.php?get_papers=1&student_id=1&category=' + myCat, true);
receivePapers.onreadystatechange = handlereceivePapers;
receivePapers.send(null);
}
}
function handlereceivePapers() {
if (receivePapers.readyState == 4) {
var container_div = document.getElementById('paper_container');
var xmldoc = receivePapers.responseXML;
var paper_nodes = xmldoc.getElementsByTagName("paper");
var n_papers = paper_nodes.length;
// Clear the whole container div.
container_div.innerHTML = "";
container_div.innerHTML = "<table class='categoryHeader' width='100%'><tr><th class ='categoryHeader' width='80%' ><br/> " + paper_nodes[1].getElementsByTagName("category")[0].firstChild.nodeValue + "</br> <br/><br/></th></tr>";
container_div.innerHTML += "<tr><td>";
for (i = 0; i < n_papers; i++) {
var paper_id = paper_nodes[i].getElementsByTagName("paper_id");
var paper_title = paper_nodes[i].getElementsByTagName("paper_title");
var paper_desc = paper_nodes[i].getElementsByTagName("paper_desc");
var paper_time = paper_nodes[i].getElementsByTagName("paper_time");
var user_real_name = paper_nodes[i].getElementsByTagName("user_real_name");
var summary_div = document.createElement('div');
summary_div.innerHTML += "<table class='paper'><tr><td class='paperLike' width=80px rowspan=2 valign='top'><div id='" + paper_id[0].firstChild.nodeValue + "'><a href='#' onclick=\"vote('" + paper_id[0].firstChild.nodeValue + "'); event.returnValue=false; return false;\"> <img src='images/Like.png' style='padding-top:5px' border='0' /></a></div></td><td><table width='100%'><tr><td class='paperTitle' style='background-color:white; text-align=left; '><a class='paperTitle' style='padding-left:0;' href='#" + paper_id[0].firstChild.nodeValue + "'>" + paper_title[0].firstChild.nodeValue + "</a></td><td class='paperName' style='margin-right:0; width:200px; background-color:white; text-align:right; vertical-align:text-top;'><span align='right' style='background-color:white; text-align:right; vertical-align:text-top; ' > " + user_real_name[0].firstChild.nodeValue + "</span></td></tr></table></td><td rowspan='2' class='paperLength' style='width:80px; text-align:right; padding-top:8px;' >" + paper_time[0].firstChild.nodeValue + " minutes</td></tr><tr><td class='paperDescription' align='left' colspan='1'>" + paper_desc[0].firstChild.nodeValue + "</td></tr></table>";
container_div.appendChild(summary_div);
}
container_div.innerHTML += "</tr></td></table";
}
}
您使用纸张描述[0]。firstChild.nodeValue paper_desc[0]是一组节点:文本节点和br节点。您只获得该集的第一个子集,因此您只获得第一个文本 您的alert()调用仅显示您只有一个paper_desc节点,而不是内部有多少节点
我还发现奇怪的是,您使用了paper_节点[1],但我不知道您的XML中是否有第二个节点,以及您是否真的想将其作为目标。这就是我所使用的,我使用了“summary_div.innerHTML+=”中的实际值。。。它看起来是这样的:“+paper\u desc[0].firstChild.nodeValue+”我想我知道你所说的“paper\u desc[0]是一组节点:文本节点和br节点”,但paper\u节点[I].getElementsByTagName(“paper\u desc”)。length说只有一个?还是我误解了?在我使用纸质节点[1]的地方,我有点作弊。所有节点都来自同一个类别,所以我只是从第一个节点抓取类别来创建类别标题。在paper_desc(用于文本和br)下实际上有7个子节点。是否有一种快速/简单的方法将paper_-desc的所有子节点连接到一个值中,或者我必须遍历所有子节点?最后,我只是将paper_-desc内容打包在一起,一切都很顺利。您指出我丢失的文件[i]下有更多节点导致了这一情况。谢谢你。
<root>
<paper id="23">
<paper_id>23</paper_id>
<paper_title>title</paper_title>
<paper_desc>
First paragraph of desc
<br/>
<br/>
Second paragraph of desc
<br/>
<br/>
Third paragraph of desc
<br/>
</paper_desc>
<paper_time>45</paper_time>
<user_real_name>Bob Student</user_real_name>
<user_id>2322</user_id>
<category>Languages</category>
</paper>
...
alert(paper_nodes[i].getElementsByTagName("paper_desc").length);