从RSS Feed的AJAX请求返回XML

我有一个网站,我想向BBC RSS提要请求返回最新消息。 问题是我收到以下错误:

Uncaught SyntaxError: Unexpected token < 

这是我的代码:

 var url = 'http://feeds.bbci.co.uk/news/rss.xml'; $.ajax({ url : url, dataType : 'jsonp', contentType : 'text/xml', success : function(data) { console.log(data); } }); 

编辑

这是我服务器上的代码,如下面的答案所示:

  public XmlDocument callBBCFeed() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://feeds.bbci.co.uk/news/rss.xml"); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); StreamReader sr = new StreamReader(response.GetResponseStream()); string result = sr.ReadToEnd(); XmlDocument doc = new XmlDocument(); doc.LoadXml(result); return doc; } 

然后我在我的JS代码中调用它,如下所示:

  var url = 'http://myServer/Global/callBBCFeed'; $.ajax({ url : url, dataType : 'xml', success : function(data) { console.log(data); } }); 

但我得到同源策略错误

检查$ .ajax调用: dataType: 'jsonp'

RSS是XML。 由于你的调用期望检索JSON, <是一个非法字符,不是吗?

阅读jQuery $ .ajax文档并查找“dataType”选项:

UPDATE

根据您添加到其他答案的一些评论,您的初始问题似乎是跨域请求

最好的解决方案是从服务器端进行跨域调用(使用ASP.NET C#/ VB中的服务器代码或其他任何东西,PHP,Perl,Ruby ......),jQuery将调用您的服务器处理程序来检索RSS feed,所以它不再是跨域请求。

您正在向XML资源发送跨域AJAX请求。 由于相同的原产地政策限制,这不起作用。

你在这里完全矛盾:

 dataType : 'jsonp' 

然后向XML资源发送请求。

允许跨域AJAX调用的JSONP完全不同。 它表示包含在javascript函数中的JSON响应,可能如下所示:

 someFunctionName({"foo":"bar", "baz":"bazzy"}) 

如果远程服务器不支持JSONP,则必须在域上编写服务器端脚本,该脚本将充当您和远程域之间的桥梁以获取XML文件。 然后使用jQuery AJAX向您的脚本发送请求。

我建议你阅读以下jQuery跨域AJAX指南,了解可以使用的不同技术。