【问题标题】:Cannot get JSON data from URL无法从 URL 获取 JSON 数据
【发布时间】:2014-05-28 05:43:32
【问题描述】:

很抱歉提出一个常见问题,但我似乎无法从以下 URL 获取数据:http://www.strava.com/stream/segments/860503

我尝试了以下方法:

$(document).ready(function() {
    $.ajax({
        url: "http://www.strava.com/stream/segments/860503&callback=?",
        dataType: "json",
        success: function(data) {
            $(document.body).append(data.latlng);
        }
    });
});

还有:

$(document).ready(function() {
    $.getJSON("http://www.strava.com/stream/segments/860503&callback=?", function(data) {
        $(document.body).append(data.latlng);
    });
)};

但我没有任何运气。我摆弄了“json”和“jsonp”,添加了“&callback=?”到 URL 以及 SO 上建议的其他内容,但无济于事。

非常感谢任何帮助。

【问题讨论】:

标签: javascript jquery html json jsonp


【解决方案1】:

该特定 URL 不支持 JSONP。它也不通过Access-Control-Allow-Origin响应头提供对Cross Origin Resource Sharing(CORS)的支持,因此无法通过ajax直接调用它。

对 JSONP 支持的要求是服务器必须将回调名称作为函数输出,将 JSON 作为 JavaScript 对象或数组在参数中传递给函数。例如:

myCallback({ ...... });

一种可能的解决方案是通过同一域上的服务器端脚本代理 ajax 请求,其中跨域对于服务器到服务器的请求来说不是问题。

【讨论】:

    【解决方案2】:

    来自“http://www.strava.com/stream/segments/860503”的数据没有回调。它不适用于跨域。如果您的脚本在同一台服务器上,请使用:您可以访问服务器的 php,请使用 echo $_GET['callback'].'('.json_encode($return) .')'; 否则尝试使用 [php] cURL;

    【讨论】:

      【解决方案3】:

      【讨论】:

        【解决方案4】:

        你试过了吗?区别在于 URL 末尾的 cb 而不是 ?

        $(document).ready(function() {
            $.getJSON("http://www.strava.com/stream/segments/860503?callback=cb", function(data) {
                $(document.body).append(data.latlng);
            });
        )};
        

        【讨论】:

          猜你喜欢
          • 2017-10-11
          • 1970-01-01
          • 2013-07-14
          • 2014-07-12
          • 1970-01-01
          • 1970-01-01
          • 2019-10-17
          • 2013-11-18
          • 2013-10-04
          相关资源
          最近更新 更多