所以我为我的工作创造了一些东西。一些XML
个文件用于在其他数据库中保存新闻项。为什么我不使用实际的数据库?可能会改变的工作政策原因。
但是现在我生成以下admin.php
:
<div id="news" style="display:none;">
<div style="float:left;width:40%;">
<h1>Regionala Nyheter</h1>
<table border="0"><tr><td><b>Rubrik: </b></td><td><input id="rntitle" type="text" /></p></td></tr>
<tr><td></td><td><textarea id="rntext" rows=10 cols=40></textarea></td></tr>
<tr><td></td><td><input type="button" value="Spara" onclick="editnews(0,-2)" /></td></tr></table>
<div id="regnews"></div>
</div>
</div>
...
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
var rnxhttp = new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHTTP");
var RNDoc;
var el_news;
var el_regnews;
var numrn = 0;
rnxhttp.onreadystatechange = function()
{
if (rnxhttp.readyState == 4 && rnxhttp.status == 200)
{
RNDoc = rnxhttp.responseXML;
refresh_regnews();
}
};
onload = function()
{
el_regnews = document.getElementById("regnews");
el_news = document.getElementById("news");
el_news.style.display = "block";
rnxhttp.open("GET", "regnews.xml", true);
rnxhttp.send();
}
var refresh_regnews = function()
{
var inhtext = "";
>> numrn = RNDoc.getElementsByTagName("entry").length;
for(var i=0; i<numrn; i++)
{
var entry = RNDoc.getElementsByTagName("entry")[i];
var edate = entry.getElementsByTagName("date")[0].childNodes[0].nodeValue;
var etitle = entry.getElementsByTagName("title")[0].childNodes[0].nodeValue;
var etext = entry.getElementsByTagName("text")[0].childNodes[0].nodeValue.split("\n");
inhtext = inhtext + "<br /><br /><div style='width:90%;border-style:ridge;'>"
inhtext = inhtext + "<table border='0'><tr><td><b>Rubrik: </b></td><td colspan='2'><input id='cntitle" + i + "' type='text' value='" + etitle + "' /></p></td></tr>";
inhtext = inhtext + "<tr><td></td><td colspan='2'><textarea id='cntext' rows=10 cols=40>";
for(var j=1; j<etext.length; j++)
inhtext = inhtext + etext[j].trim() + "\n";
inhtext = inhtext + "</textarea></td></tr><tr><td></td>"
inhtext = inhtext + "<td><input type='button' value='Spara' onclick='editnews(0," + i + ")' /></td><td><input type='button' value='Radera' /></td></tr></table></div>";
}
el_regnews.innerHTML = inhtext;
}
var editnews = function(newstype,newsindex)
{
var newstitle = "";
var newstext = "";
if(newstype==0)
{
if(newsindex<0)
{
newstitle = document.getElementById("rntitle").value;
newstext = document.getElementById("rntext").value;
}
else
{
newstitle = document.getElementById("rntitle" + newsindex).value;
newstext = document.getElementById("rntext" + newsindex).value;
}
}
$.ajax({
type: "POST",
url: "submit.php",
data:{ add: 1, type: newstype, index: newsindex, title: newstitle, text: newstext },
success: function(data){
console.log(data);
console.log(ajax.responseText);
}
});
}
</script>
>>
显示错误发生的位置。错误是:
Uncaught TypeError: Cannot read property 'getElementsByTagName' of null
at refresh_regnews (admin.php:106)
at XMLHttpRequest.rnxhttp.onreadystatechange (admin.php:68)
这有很多不足之处,但我尽可能多地提供必需品。我已经预先创建了带有标题的regnews.xml
文件和&#34; root-tag&#34;以便submit.php
可以使用(并且不确定他们的服务器是否允许创建新文件)。
在几次提交后,regnews.xml
看起来像这样:
<?xml version="1.0" encoding="UTF-8"?>
<newsitems>
<entry>
<date>2017/09/04 - 19:45:32</date>
<title>Säkerheten Först</title>
<text>
Vi tar säkerheten på största alvar!
<img src="http://www.edwardleuf.org/gradiant.bmp" />
</text>
</entry>
<entry>
<date>2017/09/04 - 19:45:32</date>
<title>Säkerheten I Förhand</title>
<text>
Vi tar säkerheten på största alvar!
</text>
</entry>
<entry>
<date>2017/09/04 - 19:45:32</date>
<title>Kontainrarna Blockerade</title>
<text>
Och stacketet fick lida. <i>Eller kanske bilen själv?</i>
</text>
</entry>
<entry>
<date>2017/09/09 - 12:55:16</date>
<title>Vi bygger nytt<title>
<text>
Varje dag bygger vi något nytt.
Man kan undra varför.
</text>
</entry>
<entry>
<date>2017/09/09 - 12:57:31</date>
<title>Vi bygger nytt<title>
<text>
Varje dag bygger vi något nytt.
Man kan undra varför.
</text>
</entry>
<entry>
<date>2017/09/09 - 12:57:46</date>
<title>Vi bygger nytt<title>
<text>
Varje dag bygger vi något nytt.
Man kan undra varför.
</text>
</entry>
</newsitems>
所以,尽管如此,我还是想知道为什么XMLHttpRequest()
无法找到<entry>
标签。或者我在某个地方的代码中写错了什么?有趣的是,当我只有一个<entry>
进行测试时,它运行正常。
仅在Chrome中测试过(没有LastPass),因为这很可能是将要使用的工作。
答案 0 :(得分:0)
实际上RNDoc
是null
,因为responseXML
要求完全有效XML
,它会返回null
。考虑检查响应XML
,首先它需要从服务器发送的响应标头中Content-Type
。