3

私は開発者ではありませんが、コピー/貼り付けは得意です。

https://latitude.google.com/latitude/apps/badge/api?user=xxxxxxxxxxxxxxxxx&type=jsonウェブページ (JavaScript) でGoogle Latitude JSON ( ) を解析しようとしています。PHPなしでそれは可能ですか?もしそうなら、いくつかのサンプルコードを見せてもらえますか?

私は探していましたが、私が見つけたすべての例は PHP を使用しています。

次のコードを使用しました。

<!DOCTYPE html>
<html>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"         type="text/javascript"></script>
<script type="text/javascript">
$(function() {
// script goes here

$.getJSON('https://latitude.google.com/latitude/apps/badge/api?&user=xxxxxxxxxxxxxxxxxxx', function(data) {
alert(data.type);
});
});
</script>
</body>
</html>

私が試したこのコードはエラーを出しました:

    3 requests  ❘  21.38KB transferred  ❘  470ms (onload: 448ms, DOMContentLoaded: 448ms)
104ms157ms209ms261ms313ms366ms418ms470ms
    OPTIONS https://latitude.google.com/latitude/apps/badge/api?&user=xxxxxxxxxxxxxxxx 405         (Method Not Allowed) jquery.min.js:19
    o.extend.ajax jquery.min.js:19
    o.extend.get jquery.min.js:19
    o.extend.getJSON jquery.min.js:19
    (anonymous function) json.html:12
    o.extend.ready.o.readyList jquery.min.js:19
    o.extend.each jquery.min.js:12
    o.extend.ready jquery.min.js:19
    (anonymous function) jquery.min.js:19
    XMLHttpRequest cannot load https://latitude.google.com/latitude/apps/badge/api?&user=xxxxxxxxxxxxxxxxxxxxxx. Origin h ttp://dl.dropbox.com is not allowed by Access-Control-Allow-Origin.
4

4 に答える 4

2

クロスドメイン AJAX リクエストを作成するには、CORS または JSONP を使用する必要があります。これは、サーバーがサポートする必要があるものです。Google Latitude はこれをサポートしていないようです。そのため、サーバー側の言語 (PHP など) を使用してデータを取得する必要があります。

編集: PHP を使用せず、JavaScript のみを使用する場合は、 Yahoo の YQLを使用できます(API キーが必要になる場合があります)。

var googleURL = 'https://latitude.google.com/latitude/apps/badge/api?user=xxxxxxxxxxxxxxxxx&type=json';
$.getJSON('http://query.yahooapis.com/v1/public/yql?callback=?', {
    q: 'select * from json where url="'+googleURL+'"',
    format: 'json'
}, function(data) {
    if(data.query.count){
        var gData = data.query.results.json;
        alert(gData.type);
    }
});
于 2012-09-25T21:19:06.943 に答える
0

間違った URL を使用しているようです。「user」の前の「&」を削除し、「type」パラメータを追加します: https://latitude.google.com/latitude/apps/badge/api?user=xxxxxxxxxxxxxxxxxx&type=json

ユーザー ID は「-」記号で始まる場合があることに注意してください。

また、ドロップボックスをホスティングとして使用しようとしたようです。これにより、ajax リクエストを行うことができなくなります。ローカル ドライブまたは通常の Web サーバーから HTML ページを読み込んでみてください。

于 2012-09-25T21:12:21.943 に答える
0

クロスサイト リクエストがあります。

エラーの最後の行を参照してください: XMLHttpRequest cannot load https://latitude.google.com/latitude/apps/badge/api?&user=xxxxxxxxxxxxxxxxxxxxxx。Origin h ttp://dl.dropbox.com は Access-Control-Allow-Origin で許可されていませんか?

元のスクリプトは 1 つのサーバーでホストされています。同じドメインからのデータのみを要求できます。別のポート(http/https)を使用しても動作しません。

これで動作させることができます。

別の可能な解決策は、YAHOO からデータをフェッチし、結果に出力をダンプする php スクリプトなどをサーバー上に作成することです。次に、jQuery ajax呼び出しが独自のスクリプトを呼び出し(サーバー上で、クロスサイトHTTPリクエストが発生しないため)、このように機能します。特に大量の負荷が予想される場合は、良いアーキテクチャではないと思いますが、うまくいくでしょう。

于 2012-09-25T21:18:49.623 に答える
0

JSON を解析する必要はありません。解析は$.getJSON自動的に行われ、JavaScript オブジェクトが返されます。エラーは JSON 自体とは無関係です。クロスサイト リクエストを実行しようとしていますが、これはブラウザのセキュリティ ポリシーによって阻止されています。を読むことをお勧めしますJSONP

http://json-p.org/

乾杯

于 2012-09-25T21:19:29.823 に答える