javascript - Google News API 给出错误 Uncaught SyntaxError : Unexpected token ')'

标签 javascript google-api cors client-side

最初我写了一些这样的代码:

var val="MSFT";
$.get('https://www.google.com/finance/company_news?q='+val+'&output=rss', 
  function (data) {
    console.log(data);
});

该代码在本地运行良好。但是当我尝试从 GitHub 调用相同的函数时,它给了我一个关于 CORS 的错误。

因此,我尝试使用以下客户端代码:

var nws_lbl = "MSFT";
var news_url = 'https://www.google.com/finance/company_news?q='+nws_lbl+'&output=rss&callback=? ';

$.ajax({
    url: news_url,
    data: {
       format: 'json'
    },
    error: function () {
        console.log("Error while getting data");
    },
    dataType: 'jsonp',
    success: function (data) {
        console.log(data);
    }
});

但是我收到以下错误:

enter image description here

在网络中我得到 200 这意味着响应是正确的。

enter image description here

总是会出错。不知道我错过了什么。有人可以帮忙吗?

最佳答案

您可以通过 CORS proxy 提出请求来绕过 CORS 限制。 ,像这样:

var val="MSFT",
    proxyUrl = 'https://cors-anywhere.herokuapp.com/',
    targetUrl = 'https://www.google.com/finance/company_news?q='+val+'&output=rss';

$.get(proxyUrl + targetUrl, 
  function (data) {
    console.log(data);
});

代理向 targetUrl 发出请求,获取响应,添加 Access-Control-Allow-Origin 响应 header 和所需的任何其他 CORS header ,然后传递该 header 返回到您的请求代码。添加了 Access-Control-Allow-Origin header 的响应就是浏览器看到的内容,因此浏览器允许您的前端代码实际访问该响应。

<小时/>

就问题中的第二个代码片段而言,我认为它对您不起作用的原因是 https://www.google.com/finance/company_news 不有什么办法返回JSONP。因此, formatcallback 参数似乎不会导致您想要的结果,而是导致一些非 JSONP 响应,您的代码无法解析这些响应,因为它不在预期的格式。

关于javascript - Google News API 给出错误 Uncaught SyntaxError : Unexpected token ')' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43314070/

相关文章:

javascript - leetcode 3sum 帮助,我该如何优化这个答案?

javascript - 获取单击按钮的父元素内的值

php - 将事件页面与谷歌日历同步

xmlhttprequest - 用于XmlHttpRequest的带有WebAPI的CORS

jquery - Solr、Tomcat 和 CORS

javascript - 在 jQuery 中绑定(bind)事件后,如何获取对事件处理函数的引用?

javascript - jquery 检测用户何时滚动到列表顶部

css - Google 字体无法在 Windows 浏览器中加载,但会在 Mac 浏览器中加载

javascript - 在 WordPress 登录屏幕中实现 reCAPTCHA v3

javascript - 为什么我的 JavaScript 代码收到“"No ' Access-Control-Allow-Origin' header is present on the requested resources”错误,而 Postman 却没有?