3

HTTP リクエストを使用して Google Fusion Tables をクエリする際に問題が発生しました。以下のクエリの URL をブラウザーに貼り付けると、カンマ区切りのリストが返されます。ただし、以下のように .get 関数でこれを行うと、 data パラメータには何も返されません。

私はこれにかなり慣れていないので、助けていただければ幸いです。

function query(){
var jqxhr=$.get(
    "https://www.google.com/fusiontables/api/query?sql=SELECT+Address+FROM+914142+WHERE+IsCustomer+%3D+1",
    function success(data, textStatus){
alert(data);})}
4

5 に答える 5

6

私はしばらく前にこれに苦労していましたが、今日の午後、Fusion Tables クエリを処理する方法のサンプル コードと実際の例を投稿しました。

一言で言えば、マークは同じオリジン ポリシー ( http://en.wikipedia.org/wiki/Same_origin_policy )について正確に正しいです。 $.get で。jQuery .get ページを読んでください。

元の例に基づいて、これは機能するはずです:

function query(){
    var queryurl = "<your query url>";
    querytail = "&jsonCallback=?";

    var jqxhr=$.get(queryurl + querytail, queryHandler, "jsonp")
}

function queryHandler(data) {
    // display the first row of retrieved data
    alert(data.table.rows[0]);
}
于 2011-08-11T02:01:45.997 に答える
0

これについて考えたとき、自分のサーバーを介してリクエストを実行する最も簡単な方法は、文字通り自分のリクエストであるかのように見せかけること、つまり保存されているファイルにあることに気付きました。

だから私は自分のドメインのコンテンツを含むphpスクリプトを作成しました

<?php echo file_get_contents('http://www.sameoriginpolicydomain.com'); ?>

そして、それはAJAXから、または直接呼び出すことで、トリックを行いました。これがあなたが探しているものです:

<?php echo file_get_contents('http://www.google.com/fusiontables/exporttable?query='.urlencode($_GET['query']).'&o=kmllink&g='.$_GET['g']); ?>
于 2011-06-22T13:49:23.083 に答える
0

同一生成元ポリシーにより、Googleフュージョンテーブルへのアクセスが妨げられている可能性があります。

これを解決するいくつかの方法は、独自のサーバー(サービスを提供しているページと同じドメインで実行されている)を介してリクエストをプロキシするか、JSONPでデータをリクエストすることです。

jsonCallback=<callback name here>Fusion Tablesリクエストにパラメーターを追加すると、JSONP応答が返されます。たとえば、リクエストは次のとおりです。

https://www.google.com/fusiontables/api/query?sql=SELECT+Address+FROM+914142+WHERE+IsCustomer+%3D+1&jsonCallback=foo

結果:

foo({"table":{"cols":["Address"],"rows":[["3400 California Street, Suite 302, San Francisco, CA 94118"],["1200 Pacific Avenue, San Francisco, CA 94109"],["340 10TH Street, San Francisco, CA 94103"],["One Embarcadero Center, Lobby Level, San Francisco, CA 94111"],["2230 Third Street, San Francisco, CA 94107"],["490 Post St, Suite 430, San Francisco, CA 94102"],["530 Bush St. Suite 101, San Francisco, CA 94108"],["114 Sansome Street, Suite 715, San Francisco, CA 94104"],["3012 Steiner Street Suite A, San Francisco, CA 94123"],["199 Fremont St # 105, San Francisco, CA 94105"],["2007 Irving St., San Francisco, CA 94122"],["450 Sutter Suite 2518, San Francisco, CA 94108"],["275 Gough Street, San Francisco, CA 94102"],["450 Sutter Street Suite 1225, San Francisco, CA 94108"],["2675 Geary Blvd., Ste 400, San Francisco, CA 94118"],["332 Pine St # 505, San Francisco, CA 94104"]]}})

IBMからのこの記事は、JSONPとその操作方法を理解するのに役立つはずです:http ://www.ibm.com/developerworks/library/wa-aj-jsonp1/

于 2011-05-30T22:06:28.203 に答える
0

noiv11の答えは機能しますが、JSONPでヘッダーを管理できないため、疑問に思っている人の承認については説明していません。このためには、実際のヘッダーを使用してデータを取得する必要があるため、cURLで少し作業する必要があるため、サーバー経由で実行する必要があります。

これがトリックを行う便利なPHPクラスです:Fusion Tables Client PHP

于 2011-12-09T15:56:35.493 に答える