如何向谷歌地方 api 发送跨域请求(似乎它不支持 jsonp)?



我正试图对google places api进行ajax调用,以获取业务评论,但没有成功。使用

crossDomain : true,dataType: 'jsonp',

正在给出错误

Uncaught SyntaxError: Unexpected token :

我认为它不支持jsonp。。有办法拿到它吗?

感谢

请尝试以下代码从Google Place API 获得响应

        $.ajax({
        type: 'GET',
        url: 'https://maps.googleapis.com/maps/api/place/autocomplete/json?&input=Houston&sensor=true&types=(cities)&key=<Your Key>',
        async: false,
        jsonpCallback: 'jsonCallback',
        contentType: "application/json",
        dataType: 'jsonp',
        success: function (json) {
            console.dir(json.sites);
        },
        error: function (e) {
            console.log(e.message);
        }
    });

Google以Jsonp Callback in Place API的形式进行响应。请在URL 中替换您的密钥

我刚刚遇到了同样的情况,并且(虽然不完全是javascript)我找到了一个好的解决方案。

使用ASP.NET,您可以创建一个执行System.NET.HTTPWebRequest的泛型处理程序,然后将结果返回到ajax请求。

JAVASCRIPT:

     $.ajax({
          url: 'navHandler.ashx',
          type: 'GET',
          data: {
              'action': 'getDirection',
              'url':'https://maps.googleapis.com/maps/api/directions/json?origin='+ myLocation.coords.latitude + ',' + myLocation.coords.longitude +
              '&destination=' + toAddress.value.replace(' ', '+') +
              '&key=<YOUR API KEY>'
          },
          success: function (data) {
              console.log(JSON.parse(data));
          }
      });

ASP:

Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest
    Dim qs = context.Request.QueryString
    Select Case qs("action")
        Case "getDirection" : context.Response.Write(getDirections(qs))
    End Select
End Sub
Private Function getDirections(qs)
    Return getWebResponse(qs("url"))
End Function
Private Function getWebResponse(url As String)
    Dim req As System.Net.HttpWebRequest = System.Net.WebRequest.Create(url)
    With req
        .Method = "GET"
        Using sr As New IO.StreamReader(.GetResponse.GetResponseStream)
            Return sr.ReadToEnd
        End Using
    End With
End Function

从理论上讲,这可以解决MOST跨领域的问题。希望这能帮助到别人。

相关内容

  • 没有找到相关文章

最新更新