无法从URL获取JSON数据

时间:2014-04-14 09:57:35

标签: javascript jquery html json jsonp

对于询问常见问题的内容感到抱歉,但我似乎无法从以下网址获取数据: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 =?'到了网址以及SO上建议的其他内容,但无济于事。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

你尝试过吗?不同之处在于网址末尾的cb而不是?

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)