使用jquery(跨域)从feed读取消息,获取Uncaught SyntaxError:Unexpected token<错误

时间:2017-04-16 07:13:08

标签: javascript jquery ajax xmlhttprequest cors

我正在尝试从SharePoint网站阅读雅虎新闻源及其跨域访问权限。我使用提到的代码访问,但得到以下错误,我已经通过很多网站和博客,但仍然没有运气。 (我在Chrome控制台中运行此代码)

  

未捕获的SyntaxError:意外的标记<

$.ajax({
  type:"GET",
  url:"https://www.yahoo.com/news/rss/world",
  dataType: "jsonp",
  success: function(data){
    console.log(data);
  }
});

enter image description here

请建议!

3 个答案:

答案 0 :(得分:4)

Google API Feed 已弃用。因此,请尝试使用 rss2json 网站等替代方案来读取转换为json的RSS。

http://rss2json.com/

示例:

将你的RSS列表如下

url: "https://api.rss2json.com/v1/api.json?rss_url=" + "https://www.yahoo.com/news/rss/world",

代码

var url= 'https://www.yahoo.com/news/rss/world';
$.ajax({
  type: 'GET',
  url: "https://api.rss2json.com/v1/api.json?rss_url=" + url,
  dataType: 'jsonp',
  success: function(data) {
    console.log(data.feed.description);    
    console.log(data);
  }
});

这是工作的jsfiddle:http://jsfiddle.net/yvzSL/1406/

我认为它应该对你有帮助

答案 1 :(得分:0)

正如我从API中看到的,存在的数据不是json,因此您会收到以下错误

将dataType更改为xml

$.ajax({
  type:"GET",
  url:"https://www.yahoo.com/news/rss/world",
  dataType: "xml",
  success: function(data){
    console.log(data);
  }
});

但是,如果API没有设置“访问控制标头”

,则可能会遇到CORS错误

答案 2 :(得分:0)

如果您获得Cors原产地,访问被拒绝或您不被允许获取这些数据, 最好的选择是在服务器端点击http get请求后解析数据,然后将其加载到HTML页面中 所以步骤将是

  1. ajax将请求本地文件
  2. 然后服务器端(您请求的本地文件)将执行http get请求以提取页面
  3. 这将获得整个页面,您可以通过了解数据的标签来获取数据
  4. 最终解析你的数据yo json对象并将其传递给你的ajax请求