我想在我的网页中提取Feed。 Feed链接为:News。我试过这段代码:
<!--
To change this template, choose Tools | Templates
and open the template in the editor.
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gmail</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="jquery-1.4.4.js"></script>
<script type="text/javascript">
var xmlhttp;
function fetchFeed(){
if(window.XMLHttpRequest){
$.ajax({
type: "GET",
url: "http://timesofindia.feedsportal.com/c/33039/f/533916/index.rss",
success: function(xml) {
var i=0;
alert($(xml).find('item').length);
$(xml).find('item').each(function(){
alert($(this).find('title').text());
i++;
});
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest: " + XMLHttpRequest + "\nTextStatus : " + textStatus + "\nError Thrown: " + errorThrown);
}
});
}
}
</script>
</head>
<body>
<div id="gmailForm"></div>
<input type="button" value="submit" onclick="fetchFeed()"/>
</body>
</html>
嗯,这在IE&amp;输出为:
但是,不在Chrome中工作:
&安培;也不在FireFox中:
我的错误在哪里?
答案 0 :(得分:4)
这:url: "http://timesofindia.feedsportal.com/c/33039/f/533916/index.rss"
我猜你不是印度时代。
你正碰到same origin policy。基本上,您只能对页面来自同一服务器执行XMLHttpRequest。除非您将安全策略设置得非常非常低,否则它甚至不应该在IE中工作。
您需要通过mod_rewrite / mod_proxy在服务器上代理请求或使用cgi脚本。
这是关于YAHOO的好文章!开发者网络描述问题并提供一个简单的PHP脚本来进行代理:JavaScript: Use a Web Proxy for Cross-Domain XMLHttpRequest Calls
答案 1 :(得分:1)
如果您正在使用jquery,则不必关心XMLHttpRequest,jquery会照顾它只需使用
$.ajax({
type: "GET",
url: "http://timesofindia.feedsportal.com/c/33039/f/533916/index.rss",
success: function(xml) {
var i=0;
alert($(xml).find('item').length);
$(xml).find('item').each(function(){
alert($(this).find('title').text());
i++;
});
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest: " + XMLHttpRequest + "\nTextStatus : " + textStatus + "\nError Thrown: " + errorThrown);
}
});