0

我有一个网站,我想向 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);
        }
    });

但我得到了同源策略错误

4

2 回答 2

1

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

RSS 是 XML。由于您的电话需要检索 JSON,<因此是非法字符,不是吗?

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

更新

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

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

于 2012-07-05T07:56:37.347 回答
0

您正在向 XML 资源发送跨域 AJAX 请求。由于相同的来源政策限制,这无法正常工作。

你在这里完全矛盾:

dataType : 'jsonp'

并且向 XML 资源发送请求。

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

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

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

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

于 2012-07-05T07:54:23.063 回答