Ajax を使用してrss.news.yahoo.com/rss/topstoriesから RSS フィード ドキュメントをフェッチし、「タイトル」タグに関連付けられた値を抽出して画面にエコーしようとしています。
xmlget.htmは、GET 要求を介して Ajax を実装します。
xmlget.phpは、PHP 関数 file_get_contents を使用して、GET 変数 $_GET['url'] で提供された URL で Web ページをロードし、画面に「title」タグを表示します。
私が得るエラーはこれです:
XML Parsing Error: junk after document element Location: moz-nullprincipal:{2f186a54-8730-4ead-9bf9-f82c8d56ad8f} Line Number 2, Column 1:
xmlget.htm
<html>
<head>
<title>Ajax Example</title>
</head>
<body>
<h1 style="text-align: center;">Loading a web page into a DIV</h1>
<div id='info'>This sentence will be replaced</div>
<script>
nocache = "&nocache="+Math.random()*1000000
url = "rss.news.yahoo.com/rss/topstories"
request = new ajaxRequest()
request.open("GET","xmlget.php?url="+url+nocache,true)
out = "";
request.onreadystatechange = function(){
if(this.readyState == 4){
if(this.status == 200){
if(this.responseXML != ""){
titles = this.responseXML.getElementsByTagName('title')
for (j = 0 ; j < titles.length ; ++j)
out += titles[j].childNodes[0].nodeValue + '<br />'
document.getElementById('info').innerHTML = out
}
else alert("Ajax error: No data received")
}
else alert( "Ajax error: " + this.statusText)
}
}
request.send(null)
function ajaxRequest(){
try{
request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e1){
try{
request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e2){
try{
request = new XMLHttpRequest()
} catch (e3){
request = false
}
}
}
return request
}
</script>
</body>
xmlget.php
<?php
if(isset($_GET['url'])){
function SanitizeString($var) {
$var = strip_tags($var);
$var = htmlentities($var);
return stripcslashes($var);
}
header('Content-Type: text/xml');
echo file_get_contents("http://www.".SanitizeString($_GET['url']));
}
?>