Ajax从其他网页拉取内容

时间:2012-07-04 19:55:21

标签: javascript ajax

所以我从另一个网站上获取了这个代码来提取rss(我问他们,他们给了我许可)我不知道我应该在TAG1和TAG2写什么。基本上这只是我的问题: 这是html(它是一个ajaxed页面)

<!doctype html>
<html lang="hu">
<head>
    <title>Videók</title>
    <meta charset="utf-8"/>
        <script type="text/javascript" src="../js/videok.js"></script>
</head>
<body>
    <h2><a href="#" style="font-size:15pt; color:#ff00e8; text-decoration: none;">Van  egy  jó  videód? Töltsd fel és kikerülhet az oldalra!</a></h2>
        <div id="videok"></div>
</body>        
</html>

这是用于拉动的Javascript

window.onload = initAll;
var xhr = false;
var dataArray = new Array();
var url = "choose url";

function initAll() {

if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
}
else {
    if (window.ActiveXObject) {
        try {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (e) { }
    }
}

if (xhr) {
    xhr.onreadystatechange = setDataArray;
    xhr.open("GET", url, true);
    xhr.send(null);
}
else {
    alert("couldn't create XMLHttpRequest");
}
}

function setDataArray() {
var tag1 = "subject1";
var tag2 = "subject2";

if (xhr.readyState == 4) {
    if (xhr.status == 200) {
        if (xhr.responseXML) {

            var allData = xhr.responseXML.getElementsByTagName(tag1);
            for (var i=0; i<allData.length; i++) {
                dataArray[i] = allData[i].getElementsByTagName(tag2)[0].firstChild.nodeValue;
            }
        }
    }
    else {
        alert("the request failed" + xhr.status);
    }
}
}

2 个答案:

答案 0 :(得分:2)

您无法使用javascript从其他网页中提取,因为在浏览器中javascript是沙盒。沙盒意味着您只能将请求发送到javascript最初来自的相同域(也称为相同的orgin策略&#39;)。

您可以使用像php这样的服务器端语言进行提取,然后通过ajax将其交给javascript。

您发布的代码看起来只是简单的ajax调用,但在尝试从您自己的网站以外的任何地方请求RSS时它不应该工作。

答案 1 :(得分:1)

最好让应用程序的服务器端获取xml的数据,并根据需要格式化数据。

您将Ajax请求命中服务器的终点,然后您的服务器将获取xml数据,正确格式化并使用正确的格式化数据响应请求。