【问题标题】:json array available via browser, but fails silently via getJSON [duplicate]json 数组可通过浏览器获得,但通过 getJSON 静默失败 [重复]
【发布时间】:2017-05-04 12:15:42
【问题描述】:

这是我第一次来这里,请多多包涵。

我有这两个类似的 web api,都可以使用浏览器访问,但只有一个可以使用 jquery。什么给了?

这个可以用浏览器和getjson,都不错:

$.getJSON( "http://api.openweathermap.org/data/2.5/weather?q=london&appid=33d0ba5efa0edb1a2282c3165b00d15e&units=metric")
.done(function( json ) {
console.log( "JSON Data: " + json.name );
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
});

下面这个几乎是一样的,但是只有当你去地址时才可用,如果你尝试获取 json 它会静默失败或抛出错误:

$.getJSON( "http://info.studyinpoland.pl/admin/public/api/events")
.done(function( json ) {
console.log( "JSON Data: " + json[0].id );
})
.fail(function( jqxhr, textStatus, error ) {
var err = textStatus + ", " + error;
console.log( "Request Failed: " + err );
});

为什么会失败?我需要来自http://info.studyinpoland.pl/admin/public/api/events 的数据,我还能如何使用 javascript 访问它?

【问题讨论】:

  • 谢谢。问题确实是跨域的,它已更改为服务器端。

标签: javascript json web-services getjson


【解决方案1】:

如果您查看控制台,您将收到此错误“XMLHttpRequest cannot load http://info.studyinpoland.pl/admin/public/api/events?_=1482151092048. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://stackoverflow.com' is not allowed访问。”

为了解决这个问题,我所做的是从后端而不是前端进行 ajax 调用,它工作得很好。

希望这会有所帮助:)

【讨论】:

  • 我无法复制上述错误信息。也阅读上面的文章。因此,似乎唯一真正的选择是以某种方式修改后端(我无权访问)。真的没有纯前端javascript解决方案吗?
【解决方案2】:

【讨论】:

  • 几乎不是一个普遍适用的解决方案,因为您不能指望所有访问者都安装此扩展程序。仅用于调试。
猜你喜欢
  • 1970-01-01
  • 2016-11-30
  • 2013-10-12
  • 2013-07-21
  • 1970-01-01
  • 2018-09-30
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
相关资源
最近更新 更多