我正试图对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跨领域的问题。希望这能帮助到别人。