【问题标题】:Obtaining json from api with jquery ajax not working使用jquery ajax从api获取json不起作用
【发布时间】:2018-01-23 12:18:17
【问题描述】:

我正在尝试使用 jquery 和 ajax 从 api 端点获取 json 对象。这是我的代码:

$.ajax({ url: 'https://this-specific-website.com/customers.json', type: 'GET', contentType: 'application/json' }).done((response)=> { console.log('HELLLLLO INSIDE response') console.log('response', response) })

我也对$.getJSON 进行了同样的尝试,如下所示:

$.getJSON('https://this-specific-website.com/customers.json', (response)=> { console.log('HELLO INSIDE response') console.log('response', response) })

但我不断收到以下错误:

请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'null'。

有没有办法解决这个问题?

提前谢谢你!!

更新:

我终于让它工作了。我没有在前端使用 jquery 和 ajax,而是创建了一个单独的 .js 文件并像这样使用http.get()

Calling a JSON API with Node.js

【问题讨论】:

  • 您请求 json 的服务器没有启用 CORS。如果他们支持 JSONP,那么就使用它,否则你必须在后端发出请求。
  • 或许this answer可以帮忙
  • 为了使用 CORS(跨域资源共享)来使用资源,服务器应该授权您的访问。
  • 可能是重复的!看看这个stackoverflow.com/questions/43824511/…

标签: javascript jquery json ajax url


【解决方案1】:

如果您的服务器支持此功能,请使用 JSONP,以下是示例。 ALternative 是在同一域中调用servelet 或 PHP,它们进行后端调用并将响应返回给您的正常 AJAX(或 AJAX JSON_P)

$.ajax({
     url:"testserver.php",
     dataType: 'jsonp', // Notice! JSONP <-- P (lowercase)
     success:function(json){
         // do stuff with json (in this case an array)
         alert("Success");
     },
     error:function(){
         alert("Error");
     }      
});

【讨论】:

  • 使用 jsonp 不起作用。这是我收到的错误:
  • 它拒绝执行脚本,因为 jsonp 不是它设置允许的 MIME 类型。启用严格的 MIME 类型检查。
  • 在这种情况下,现在您只能选择对 PHP 或 SERVELET 进行 AJAX 调用,而后者必须调用支持。
【解决方案2】:

如果您从中请求 JSON 的服务器未启用 CORS,则您无法从浏览器发出 CORS 请求。如果他们支持,您可以尝试 JSONP。

如果您在后端运行,那么您可以进行服务器到服务器的请求,这应该可以工作。

例如,如果您在 PHP 服务器上,请使用:

<?php echo file_get_contents("https://this-specific-website.com/customers.json"); ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-25
    • 2014-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多