0

我有以下查询字符串:

query = 'https://www.googleapis.com/fusiontables/v1/query?sql=SELECT%20Precinct%20FROM%201Kj-5ett9nIpkr2-gkof0cUGiaZm1BDVZx9zv-iQ%20WHERE%20ST_INTERSECTS(geometry,%20RECTANGLE(LATLNG(40.7549937,%20-73.98841900000002),%20LATLNG(40.7549937,%20-73.98841900000002)))&key=AIzaSyBJ1SHkB7EWWVSyDiPUA1mWZDEKt7gISDk'

这将返回以下带有 HTTP GET 请求的对象:

{
 "kind": "fusiontables#sqlresponse",
 "columns": [
  "Precinct"
 ],
 "rows": [
  [
   "76"
  ]
 ]
}

所以我正在尝试使用 jQuery 将其获取到网络浏览器中。这在 Firefox 和 Chrome 中运行良好:

$.get(precinctQuery, function(data){console.log(data)});

但 Firefox 不喜欢这样:

$.get(precinctQuery, function(data){console.log(data.rows[0][0])});

或这个:

$.get(precinctQuery, function(data){console.log(data.['rows'][0][0])});

两次,Firefox 都说结果是未定义的。Chrome 返回预期结果“76”。

Chrome 是否在幕后修复此代码以使其正常工作?为什么 Firefox 不喜欢它?

4

2 回答 2

2

您需要json在函数上添加优势$.get,如下所示:

$.get(precinctQuery, function(data)
{
    console.log(data)
}, 'json');

这将确定数据的格式,json过滤器将为您解析 JSON,然后将其返回为data. $.getJSON会使代码更短,但它是上述代码的快捷方式。

于 2012-11-26T16:33:02.723 回答
1

您忘记将 JSON 数据解析为可读对象,以下代码可以正常工作:

query = 'https://www.googleapis.com/fusiontables/v1/query?sql=SELECT%20Precinct%20FROM%201Kj-5ett9nIpkr2-gkof0cUGiaZm1BDVZx9zv-iQ%20WHERE%20ST_INTERSECTS(geometry,%20RECTANGLE(LATLNG(40.7549937,%20-73.98841900000002),%20LATLNG(40.7549937,%20-73.98841900000002)))&key=AIzaSyBJ1SHkB7EWWVSyDiPUA1mWZDEKt7gISDk';
$.get(query, function(data)
    {
        var obj = jQuery.parseJSON(data);
        console.log(obj.rows[0][0]);
    }
);
于 2012-11-26T16:28:56.987 回答