【问题标题】:getJSON unexpected token errorgetJSON 意外令牌错误
【发布时间】:2013-10-26 14:25:45
【问题描述】:

我正在尝试从 USGS 获取地震数据,但一直收到错误消息:

Uncaught SyntaxError: Unexpected token :

我尝试使用 jsonp 格式的 $.ajax,但一直遇到同样的问题。我也尝试在我的网址末尾没有回调,在这种情况下我收到错误:

MLHttpRequest 无法加载 http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojson。 Access-Control-Allow-Origin 不允许 Origin http://people.oregonstate.edu

$.getJSON(
   "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojson&callback=?",
    function(data) {
       console.log(data);
    }
 );

如果无法通过这种方式获取数据,或者可能是 jQuery 以外的其他方法,有人可以帮助我吗?

【问题讨论】:

  • 该服务未将回调函数名称包装在数据周围。确定他们有 jsonp 支持?
  • 此服务不提供 JSONP,仅提供常规 JSON。而且由于您在不同的域中,因此您无法直接通过客户端访问此服务。您需要在自己的域上设置代理。

标签: javascript jquery ajax json jsonp


【解决方案1】:

最简单的解决方法是告诉服务你想要jsonp,然后使用服务提供的回调。

window.eqfeed_callback = function(data){
    console.log(data);
};
//$.getScript("http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojsonp");
var s = document.createElement("script");
s.src = "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojsonp";
document.getElementsByTagName("head")[0].appendChild(s);

【讨论】:

  • 你先生真棒!我正要实现一个 php 代理。
【解决方案2】:

http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojsonp 使用他们的 JSONP 服务

$.ajax({
    url: 'http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojsonp',
    dataType: 'jsonp',
    jsonp: false,
    jsonpCallback: 'eqfeed_callback'
}).done(function(data) {
    console.log(data);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 2015-06-09
    • 2011-12-20
    • 2015-11-19
    • 2018-08-27
    • 2014-12-07
    • 2016-08-10
    相关资源
    最近更新 更多