1

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

crossDomain : true,dataType: 'jsonp',

给出错误

Uncaught SyntaxError: Unexpected token :

我认为它不支持jsonp..有没有办法得到它?

谢谢

4

2 回答 2

2

请尝试以下代码以获取来自 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 中替换您的密钥

于 2013-10-23T10:44:57.163 回答
0

我刚刚遇到了同样的情况,并且(虽然不完全是 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

理论上这可以解决大多数跨域问题。希望这可以帮助某人。

于 2015-12-10T20:20:02.803 回答