Google Places API jQuery.ajax()リクエストは、作業URLで失敗します

google-maps-api-3 jquery
Google Places API jQuery.ajax()リクエストは、作業URLで失敗します

ブラウザのタブに次のURLを貼り付けた場合:

https://maps.googleapis.com/maps/api/place/search/json?location=51.5237587%2C-0.1583642&radius=500&types=bar&key=MY_KEY_HERE&sensor=false
  1. Google Places APIから予想されるJSON応答を取得します
    (MY_KEY_HEREは、もちろんここと実際のキーに置き換えられます
    .ajax() below). However when using this jQuery.ajax() construct:

$.ajax({
     type: 'GET',
     url: "https://maps.googleapis.com/maps/api/place/search/json",
     data: {"location" : latlng, "radius" : 500, "types" : "bar", "key" : "MY_KEY_HERE", "sensor" : "false",},
     dataType: "json",
     success: function(data)
     {
       var pubResults = data;
     },
     error: function(data)
     {
       alert(JSON.stringify(data));
     },
     complete: function(data)
     {
       initialize($.oneapi.latitude, $.oneapi.longitude, pubResults);
     }
   });

…​then the success block is not reached, instead the error block
出力:

{"readyState":0,"responseText":"","status":0,"statusText":"error"}

Firefox 5.01でのテスト。 Webコンソールは、.ajax()がこの質問の冒頭に記載されているURLを取得していることを確認します。 そのURLへのjQuery呼び出しでエラーが発生する理由はありますが、ブラウザーのタブに同じURLを貼り付けると、予想されるJSONになりますか?

お時間をいただきありがとうございます。

  1  0


ベストアンサー

これはクロスドメインリクエストです。 デフォルトでは、ブラウザはクロスドメインサイトからの応答をブロックします。 データ型としてjsonpを使用する必要があります。 同じようにgoogleするだけで、jquery APIを使用してどのように実行できるかを確認できます。 スタックオーバーフローにもこれらの問題があります。

同じオリジンポリシーの下では、server1.example.comから提供されるWebページは通常、server1.example.com以外のサーバーに接続したり、サーバーと通信したりすることはできません。 例外はHTML要素です。 要素のオープンポリシーを利用して、一部のページではそれらを使用して、他のオリジンから動的に生成されたJSON形式のデータで動作するJavascriptコードを取得します。 この使用パターンはJSONPと呼ばれます。

2


タイトルとURLをコピーしました