0

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']));

}

?>

4

2 に答える 2

0

頭に次の行を追加してください

<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
于 2013-10-09T03:18:57.200 に答える