无法完成.getJSON请求?

时间:2012-09-14 18:42:32

标签: javascript jquery html json getjson

首先,这是我想要完成的跨域请求。以下是Strava API白皮书的链接,我将其作为参考。 Strava Wiki

请参阅我在下面使用的代码。如果无法使用jQuery执行请求,您能举例说明另一种方法吗? (例如AJAX)我已经完成了我的研究,但我承认我不太了解为什么请求不起作用。在显示警报之前是否需要插入等待响应的参数,或者是暗示的?提前谢谢!

 <html lang="en">
 <head>
   <meta charset="utf-8">
   <title>jQuery demo</title>
 </head>
 <body>
   <a href="http://jquery.com/">jQuery</a>
   <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
   <script>
        $(document).ready(function(){
            $("a").click(function(event){
                $.getJSON('http://www.strava.com/api/v1/segments/637215', function(data) {
                    alert(data);
                });
            });
         });
   </script>
 </body>
 </html>

1 个答案:

答案 0 :(得分:3)

有关解决方案无法按预期运行的详细信息,请参阅:Access-Control-Allow-Origin Multiple Origin Domains?

尝试使用.ajax方法代替dataType: "jsonp"

$.ajax({
   url: "http://www.strava.com/api/v1/segments/637215",
    dataType: 'jsonp',
    success: function(data){
        console.log(data);
     }
 });

运行它会得到以下结果:

{"segment":{"id":637215,"name":"Highway 33 Climb - Matilija Lake to Rose Valley","distance":16779.2,"elevationGain":1101.1,"elevationHigh":1070.9,"elevationLow":289.54,"averageGrade":4.64087,"climbCategory":"1"}}

<强> EXAMPLE

请注意,返回的数据似乎确实存在错误,但我能够看到它。 (请参阅下面的 Musa 的评论)。

修改

或者你可以改变:

$.getJSON('http://www.strava.com/api/v1/segments/637215', function(data) {
                    console.log(data);
                });

为:

$.getJSON('http://www.strava.com/api/v1/segments/637215?callback=?', function(data) {
                    console.log(data);
                });

这会导致.getJSON()使用jsonp

If the URL includes the string "callback=?" (or similar, as defined by the server-side API), the request is treated as JSONP instead.

EXAMPLE