我有以下查询字符串:
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不喜欢它?
答案 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]);
}
);