为什么我可以在Chrome中访问JSON对象,但在Firefox中却不能访问?

时间:2012-11-26 16:21:48

标签: jquery json firefox google-chrome

我有以下查询字符串:

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将其提取到Web浏览器中。这适用于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都说结果是Undefined。 Chrome会返回预期结果“76”。

Chrome是否在幕后修复此代码,以便它可以正常运行?为什么Firefox不喜欢它?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分: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]);
    }
);