2011-10-30 11 views
0

JSONを使用してローカライゼーション座標をhttp://aprs.fi/page/apiから取得したいとします。私はhttp://api.jquery.com/jQuery.getJSONで例を見つけました:$ .getJSONはsucced

<script> 
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", 
    { 
    tags: "cat", 
    tagmode: "any", 
    format: "json" 
    }, 
    function(data) { 
    $.each(data.items, function(i,item){ 
     $("<img/>").attr("src", item.media.m).appendTo("#images"); 
     if (i == 3) return false; 
    }); 
    }); 
</script> 

は、それが機能(データ)を実行し、それがウェブサイト上で4枚の画像を置きます。私は私のhtmlファイルにこのコードを貼り付け、それが動作しますので、私はaprs.fiからJSONデータを取得するために、それを変更:

<script>  
$.getJSON("http://api.aprs.fi/api/get?name=OH7RDA&what=loc&apikey=_key_&format=json", 
    function(data) 
    { 
     alert("Anything"); 
    }); 
}; 
</script> 

たぶん私のクエリが間違っているが、それでも「何」私の画面上で印刷されません。 。私はそれを動作させるためにどのように変更するのか分かりません。

+0

クロスドメインなので、jsonpコールでもないはずです。 jsoncallback =を追加しますか?例: http://api.aprs.fi/api/get?name=OH7RDA&what=loc&apikey=_key_&format=json&jsoncallback=? – Jayendra

+0

アクセスしようとしているサイトは、JSONPリクエストへの応答方法を理解している必要があります。私は、そのサイトがそうしているとの兆候は見ません。 – Pointy

答えて

1

サービスがJSON形式の結果を返すことができたとしても、JSONP経由でサービスにアクセスできるわけではありません。サイトは、応答がJSONP応答として機能するように、そのような要求を明示的に認識しなければなりません。つまり、レスポンスはJSON戻りデータを関数の引数として渡して関数呼び出しの形式をとる必要があります。

+0

私はにma urlを変更しましたが、それでも動作しません。 – daniel

0

WebブラウザでgetJSONが使用しているXHRは、同じorigin-policyの対象です; XHRは、使用されているWebページとまったく同じサーバー、ポート、プロトコルの組み合わせからのみアクセスできます.Webページがhttp://example.org:5625で実行されている場合、XHR要求はhttp://example.org:5625/some-path-hereであると指摘できます。

回避策は、リソースがタグとしてロードされるJSONPと呼ばれます。しかし、問題のサービスはそれを認識する必要があります。コールバックパラメータを追加した後は、

callbackname({"the": "respose", "goes": "here"}); 

という名前のコールバックへの関数呼び出しが表示されるため、そのことが分かります。しかし、私が正しく理解していれば、使用しているサービスはJSONPをサポートしていません。次に、唯一のオプションは、プロキシとして動作するサーバサイドスクリプトを作成することです。

関連する問題