私は自分の仕事のために少し物を作っています。他のデータベースとの間でニュースアイテムを保持するためのファイルのうちの1つはXML
です。なぜ私は実際のデータベースを使用しないのですか?変化する可能性のある仕事方針の理由。PHPから生成された 'getElementsByTagName'はPHPで生成された
しかし、今の私は、次の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)
これはかなり欠けていますが、私はできるだけ多くの本質を与えています。 submit.php
には何かがあります(また、サーバーが新しいファイルの作成を許可しているかどうかわからない)ように、私はregnews.xml
ファイルをヘッダーと "ルートタグ"をあらかじめ作成しています。いくつかの提出後
、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はありません)。これは、どの作品が使用される可能性が高いためです。 responseXML
は完全に有効なXML
を必要とするため
エラーメッセージが表示されますか? – jmargolisvt
@jmargolisvtエラーは次のとおりです。 'キャッチされていないTypeError:プロパティ 'getElementsByTagName' of nullが読み取れません。 ' – Edward
古典的な誤りです。可変的な同期方法にアクセスする。 – WaldemarIce