AJAX에서 텍스트의 몇 가지 paragrahs로 div를 업데이트하려고 할 때 이상한 문제가 있습니다. 내가 container_div하는 내용을 누르면AJAX가 단락에서 잘림되었습니다.
<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>
...
는 첫 번째 단락은 다음과 같습니다
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";
}
}
반환하기 년대 XML입니다 :
여기 내가 사용 기능입니다 게재. paper_desc를 반환하기 위해 자바 스크립트 경고()를 사용하면 첫 번째 단락 만 포함됩니다. 나는 다른 노드를 찾는 시도했다 그러나 이것은 단지 하나의 노드가 말한다 : 텍스트 노드 :
alert(paper_nodes[i].getElementsByTagName("paper_desc").length);
"summary_div.innerHTML + ="의 실제 값을 사용하는 곳에서 사용하고있는 것은 ...
좋아, 다시 내 코드를 통해 읽은 후에, 물론, 당신이 옳았다는 것이 밝혀졌습니다. paper_desc 아래에는 실제로 7 개의 childNodes가 있습니다 (텍스트 및 br의 경우). paper_desc의 모든 자식 노드를 단일 값으로 결합하는 빠르고 쉬운 방법이 있습니까? 아니면 모두 반복해야합니까? – SylanderXS
결국 나는 paper_desc 컨텐츠를 에 싸서 완벽하게 작동했습니다. 내가 잃어버린 paper_dec [i] 아래에 노드가 더 있었다는 표시가이 문제를 일으켰습니다. 고마워. – SylanderXS