【问题标题】:$.ajax returns data from external api but $.getJSON throws error [duplicate]$.ajax 从外部 api 返回数据但 $.getJSON 抛出错误 [重复]
【发布时间】:2018-09-23 02:21:41
【问题描述】:

我在使用 .getJSON JQuery 方法从外部 API* 返回数据时遇到问题,但 .ajax 方法可以正常工作。

将此代码与 .ajax 一起使用对我有用:

var apiKey = 'myKey',
requestURL = 'https://api.propublica.org/congress/v1/115/senate/members.json'; 


        $.ajax({
     url: requestURL, 
     type: "GET",
     dataType: 'json',
     headers: {'X-API-Key': apiKey }
   }).done(function(data){
   console.log(data)
   });

使用 $.getJSON 对我不起作用:

var apiKey = 'myKey',
requestURL = 'https://api.propublica.org/congress/v1/115/senate/members.json'; 


    $.getJSON(requestURL + '?callback=?', {
        'X-API-Key': apiKey
    }, function(data){
    console.log(data);
    });

唯一的区别是我添加了“?callback=?”到 url 作为文档和几个帖子/教程所说的那样,它将返回 JSONP。我已尝试更改 url 以查看是否可以修复它,但几个小时后我无法使其正常工作。

我得到的控制台错误是这样的:

GET https://api.propublica.org/congress/v1/115/senate/members.json?callback=jQuery110203399070889473792_1523562076495&X-API-Key=myKey&_=1523562076496net::ERR_ABORTED

如果我采用“?callback=?”在 getJSON 示例的 url 之外,我得到了上面的消息以及这个额外的错误消息:

无法加载https://api.propublica.org/congress/v1/115/senate/members.json?X-API-Key=myKey:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'http://localhost:81' 不允许访问。响应的 HTTP 状态代码为 401。

我很困惑为什么这不起作用,因为 getJSON 应该是我在 JQuery getJSON Documentation 上面的确切 .ajax 调用的简写。

你知道为什么 .getJSON 不起作用但 .ajax 会起作用吗?

【问题讨论】:

    标签: jquery ajax api getjson


    【解决方案1】:

    我认为问题可能在于您无法将标头传递给 $.getJSON。

    可能重复:How can I pass request headers with jQuery's getJSON() method?

    【讨论】:

      【解决方案2】:

      您不能使用 getJSON 设置 http 标头,您的 API 似乎要求它允许 CORS。虽然您可以使用ajaxSetup 设置标头,但我不推荐它,因为所有后续的 ajax 调用都会使用这些设置。

      jQuery.ajaxSetup({headers: {'X-API-Key': apiKey }});
      $.getJSON(requestURL, function(data){
          console.log(data);
      });
      

      【讨论】:

        猜你喜欢
        • 2017-06-17
        • 1970-01-01
        • 1970-01-01
        • 2021-12-08
        • 2020-06-08
        • 2018-06-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多