【问题标题】:Access-Control-Allow-Origin prevents me from accessing google api despite using dataType:'jsonp'尽管使用了 dataType:'jsonp',但 Access-Control-Allow-Origin 阻止我访问 google api
【发布时间】:2016-04-15 20:34:01
【问题描述】:

我正在尝试使用 google 的 places api 来靠近地点....所以我尝试添加标题,就像它在代码中所写的那样......它没有用......然后我厌倦了 dataType:'jsonp' 。 ..这显示了一些错误...当我在chrome中看到错误时...从google返回的数据在那里,但我无法访问它...但是firefox没有完全显示从google返回的数据,但只有第二个数据行“html_attributions":[],

$.ajax({                        
       url : "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=13.089500428429146,77.48688038438559&radius=1000&type=bus_station&key=AXXXXXXXXXXXXXXXXXXXXXXX",
        type:"GET",
        //headers:{"Access-Control-Allow-Origin":"https://maps.googleapis.com/"},
        dataType: 'jsonp',
        success: function (return_data_json){
                console.log(return_data_json);
        }   
});

【问题讨论】:

  • jsonp 并不是 CORS 问题的全部解决方案。它仅在您请求的 api 也支持 JSONP 时才有效。
  • 你能给我一些解决方案吗....如果你可以.....
  • 如果 API 端点需要 API 密钥,很有可能您将无法使用浏览器发出请求(并且由于 TOS 可能不应该这样)所述api。)
  • 我在 android 上做的,效果很好……为什么在浏览器中不行
  • 在文档的最顶部:“Google Places API Web 服务用于服务器应用程序。如果您正在构建客户端应用程序,请查看 Google适用于 Android 的 Places API 和 Google Maps JavaScript API 中的 Places 库。"

标签: javascript ajax google-maps google-places-api


【解决方案1】:

好的,这就是我们在 javascript 中的操作方式……谷歌为此提供了自己的功能……

链接:https://developers.google.com/maps/documentation/javascript/places#place_search_requests

var map;
var service;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);

  map = new google.maps.Map(document.getElementById('map'), {
      center: pyrmont,
      zoom: 15
    });

  var request = {
    location: pyrmont,
    radius: '500',
    types: ['store']
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      var place = results[i];
      createMarker(results[i]);
    }
  }
}
  • 任何人都想访问地点 ID 和东西,我们就是这样做的......在回调函数中,我们有由谷歌返回的地点的 JSONArray...... 在 var place = results[i]; 行之后的 for 循环内的回调函数中,你可以得到你想要的

    console.log(place.name); console.log(place.place_id); var types = String(place.types); types=types.split(","); console.log(types[0]);

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2021-06-29
    • 2012-03-25
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    相关资源
    最近更新 更多