Google Places API:json错误未捕获SyntaxError意外标记
我不明白为什么我会得到这么多不同的错误。 我使用Google Places API进行测试,并使用回调函数简单地使用ajax查询调用,我收到了json,但在CHrome浏览器中,我得到
"Uncaught SyntaxError: Unexpected token :"
为什么这到底是什么? 我认为谷歌是对的,他们的JSON必须是正确的......那么问题在哪里呢?
这是我的代码
$.ajax({
dataType: "json",
url: "https://maps.googleapis.com/maps/api/place/search/json?location=40.47,-73.58&radius=5000&sensor=false&key=MYOWN&name&callback=?",
success: function(data) {
console.log('success');
},
error: function(data) {
console.log('error');
}
});
如果服务器返回纯JSON,则会出现此错误。 由于这是一个跨站点请求,jQuery必须使用JSONP技术 ,其中服务器响应被解释为脚本。 这是在浏览器中执行跨站点请求的唯一方法。
问题在于服务器必须支持JSONP,并用jQuery生成的回调包围JSON回答。 答案必须如下所示:
jQuery17101705844928510487_1324249734338({"data":"whatever"});
带有PHP的服务器示例:
<?php
header("Content-Type:text/javascript"); // avoid browser warnings
$request = new HttpRequest("http://programmingisart.com/json-data-source.php", HttpRequest::METH_GET);
$request->send();
$json_data = $request->getResponseBody();
// wrap the data as with the callback
$callback = isset($_GET["callback"]) ? $_GET["callback"] : "alert";
echo $callback."(".$json_data.");";
Client-Example with jQuery:
<div id="json-result"></div>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
dataType: "jsonp",
url: "jsonp-wrapper.php",
success: function(data) {
$("#json-result").html(JSON.stringify(data));
},
error: function() {
alert("error");
}
});
});
</script>
您可以用任何其他服务器平台替换PHP代码并执行所需的步骤。
上一篇: Google Places API: json error Uncaught SyntaxError Unexpected token