Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AJAX在段落上被截断_Ajax - Fatal编程技术网

AJAX在段落上被截断

AJAX在段落上被截断,ajax,Ajax,当我试图用来自AJAX的两段文本更新div时,遇到了一个奇怪的问题 以下是我正在使用的函数: var receivePapers = getXmlHttpRequestObject(); function get_papers(myCat){ if (receivePapers.readyState == 4 || receivePapers.readyState == 0) { receivePap

当我试图用来自AJAX的两段文本更新div时,遇到了一个奇怪的问题

以下是我正在使用的函数:

            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/>&nbsp;" + paper_nodes[1].getElementsByTagName("category")[0].firstChild.nodeValue + "</br>&nbsp;<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);