javascript - 如何从谷歌地理编码解析 json (jquery)?

标签 javascript jquery google-code

我正在尝试使用纬度和经度获取城市名称。

Google 地理编码支持此选项并称为“Reverse geocoding”。 正如示例中所写,我必须对此链接发出获取请求:

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true_or_false

它返回我的json数组,你可以试试。

我如何在 jquery 中解析这个 json?

我试着这样做:

   $.ajax({
      url: 'http://maps.googleapis.com/maps/api/geocode/json',
      type: 'get',
      data: {
        'latlng':lat+","+longit,
        'sensor': false
      },
      dataType: 'jsonp',
      success: function(result){

        console.log(results)

      },
      error: function(xhr,ajaxOptions,thrownError){
        console.log(xhr.status);
        console.log(ajaxOptions);
        console.log(thrownError);
      }

  })

我得到了这个数组,但是无法解析。它说:

Uncaught SyntaxError: Unexpected token :

我该如何解决这个问题?

最佳答案

简答;你不能:这里不支持 JSONP(或者至少实际上没有记录为受支持),请使用 Geocoder类。

Google Geocoding APIs say:

Looking to use this service in a JavaScript application? Check out the Geocoder class of the Google Maps API v3.

Google 似乎只提供纯 JSON,由于同源策略,您无法在自己的页面中解析它 - 但如果您是,则可以使用它。在没有该限制的另一台服务器上运行的 php 应用程序。因此,如果您想在网页上使用它,可以使用他们的 Geocoder 类 - 无论如何它都会为您完成解析工作。

--

当您使用 dataType="jsonp"时,jQuery 会尝试通过创建 SCRIPT 元素并将 src 属性设置为查询字符串来加载结果。然后浏览器最终获取返回的 json,并尝试将其解析为一个独立的 javascript 文件 - 这就是失败的原因。

问题是 JSON 不是有效的纯独立 javascript:例如,返回的 JSON 字符串:

{ "results" : [ { "address_components" : [

... 无法解析 - 这就是导致错误的原因。如果是,另一方面,

var foo = { "results" : [ { "address_components" : [

callback({ "results" : [ { "address_components" : [ ...  } )

那么 它将是有效的 javascript。后者是 jsonp 实际上依赖于返回的东西。

最重要的是,您正在取回有效的 JSON,但由于同源策略,您无法通过 XmlHttpRequest 直接访问它;并且因为它不是带有函数的 JSONP,所以您不能通过 JSONP 所依赖的 SCRIPT 后门使用它来解决同源问题。在网页上使用它的唯一选择是使用 Google 为您提供的类 - 因为它们也来自 Google 站点,它们可以访问 JSON 并成功解析它 - 并返回处理过的结果返回给您。

关于javascript - 如何从谷歌地理编码解析 json (jquery)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11012196/

相关文章:

javascript - 正则表达式以任何顺序匹配至少 7 位数字和任意数量的特殊字符的模式

javascript - JQuery.live() 无法正常工作

javascript - 如何重新打开语义 ui 模式?

javascript - AJAX 返回嵌入 JSON 的 html 页面

software-distribution - 谷歌代码的当前替代品

google-code - 是否有针对 Google 代码问题的 API(SOAP、JSON、XML-RPC、REST,等等)?

php - Javascript X/Y 坐标到数据库?

带名称的 Javascript 动态函数调用

javascript - 在 Javascript/Jquery 中执行 url 而不在浏览器上打开它

linux - 提交后自动更新 SVN 并将其导出为 zip