jquery - 带有 AJAX 的 Google Elevation API?

标签 jquery json google-maps jsonp google-elevation-api

我正在尝试将 Google Elevation API 与 JQuery 的 getJSON 函数结合使用。

我正在使用这段使用 JSONP 的代码:

jQuery.getJSON("http://maps.googleapis.com/maps/api/elevation/json?locations=23.444,45.4545&sensor=false&jsoncallback=?", function(json){
    alert("a");
});

我可以在 Firebug 中看到 GET 请求已正确发送,并且我收到了来自 Google 的正确响应:

{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
}

但是我从来没有收到警报,并且我从 Firebug 收到此错误:

invalid label
"status": "OK",\n

我正在使用 Google Maps API v2,因此我想使用内置方法。

有没有办法通过 AJAX 请求使用 Google Elevation API 获取海拔高度,而无需创建代理?

感谢您的帮助。

本杰明

最佳答案

该 API 不支持 JSONP,它仅返回 JSON...所以是的,在这种情况下您需要代理。

需要明确的是,正确的响应应该是这样的:

someFunction({
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
})

jQuery 将 callback=? 替换为 callback=someFunction,但 google 不使用此参数,因为该服务不支持 JSONP...所以问题是您正在有效地执行此操作:

<script type="text/javascript">
{
  "status": "OK",
  "results": [ {
    "location": {
      "lat": 23.4440000,
      "lng": 45.4545000
    },
    "elevation": 816.7996216
  } ]
}
</script>

这会导致错误,因为这不是有效的 JavaScript...您会收到无效标签错误。如果它有函数包装器,那么它有效,并且会执行 jQuery 创建的函数(来自您的 success 回调)。

关于jquery - 带有 AJAX 的 Google Elevation API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3905529/

相关文章:

ios - 在 xcode 6.0.1 中使用 json 发布数据

c# - 将 nHibernate 查询序列化为 JSON

java - 如何在数组中存储多个数据类型?

javascript - 重新定位谷歌地图的html链接

android - 导入 com.google.android.gms 无法解析

javascript - 基于 JQuery 的全宽响应图像 slider 损坏了吗?

javascript - 清除输入文本旁边 float 的图标

javascript - Pokemon API,Promises javascript 获取数组 json 内的数据

javascript - 通过ajax发送带有多个参数的表单

javascript - 如何使用回车键进入剑道网格中的新行