1

まず、これは私が完了しようとしているクロスドメイン リクエストです。これは、参考として使用している Strava API ホワイトペーパーへのリンクです。ストラバウィキ

以下で使用しているコードを参照してください。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>
4

1 に答える 1

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"}}

返されたデータにエラーがあるように見えますが、それを見ることができます。(下の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.

于 2012-09-14T18:52:04.143 に答える