我有这段代码:
$.get('http://mapit.mysociety.org/areas/'+ulo, function(response) {
console.log(response);
var areaList = [];
for (var k in response) {
var obj = response[k];
areaList.push(obj);
console.log(response[k]);
}
var len = areaList.length;
在Chrome中,它运行良好,例如,将+ ulo更改为wembley。
在Chrome开发工具上,我根据标题对象下的两个console.log获取对象:
对象 index_fb.js:41 [ 宾语 all_names:对象 代码:对象 国家:“E” country_name:“英格兰” generation_high:18 generation_low:1 id:8258 名称:“温布利中心” parent_area:2488 类型:“LBW” type_name:“伦敦自治市区” proto :对象
但是,在firefox中也是如此,我在Firebug中得到了这个:
{“8258”:{“parent_area”:2488,“generation_high”:18,“all_names”:{},“id”:8258,“codes”:{“ons”:“00AEHE”,“gss” :“E05000104”,“unit_id”:“11458”},“name”:“Wembley Central”,“country”:“E”,“type_name”:“London borough ward”,“generation_low”:1,“country_name” :“英格兰”,“类型”:“LBW”}}
index_fb.js(第41行)
{
index_fb.js(第48行)
“
index_fb.js(第48行)
8
index_fb.js(第48行)
2
index_fb.js(第48行)
5
index_fb.js(第48行)
8
index_fb.js(第48行)
“
index_fb.js(第48行)
index_fb.js(第48行)
index_fb.js(第48行)
{
index_fb.js(第48行)
“
index_fb.js(第48行)
P
index_fb.js(第48行)
一
index_fb.js(第48行)
[R
index_fb.js(第48行)
ë
index_fb.js(第48行)
名词
index_fb.js(第48行)
吨
index_fb.js(第48行)
_
index_fb.js(第48行)
一
index_fb.js(第48行)
[R
index_fb.js(第48行)
ë
index_fb.js(第48行)
一
index_fb.js(第48行)
“
index_fb.js(第48行)
index_fb.js(第48行)
index_fb.js(第48行)
2
index_fb.js(第48行)
4
index_fb.js(第48行)
8
index_fb.js(第48行)
8
index_fb.js(第48行)
等等
所以,Console.log(响应)是正确的,但它似乎占用了:
中的每一个字母for (var k in response) {
k = firefox中的数字,与chrome一样,它将k作为整数8258处理。
我如何解决这个问题,以便两者兼容?
由于
修改
这是新代码:仍然是同一个问题:
$.get('http://mapit.mysociety.org/areas/'+ulo, function(response) {
console.log(response);
var areaList = [];
for (var k in response) {
if (response.hasOwnProperty(k)) {
var obj = response[k];
areaList.push(obj);
}
}
我也试过,但是我需要将Get包装成$ .ajax以确保它知道返回了json。该应用程序在将ajax用于非安全源时存在问题。
到目前为止还没有快乐:(
答案 0 :(得分:2)
Firefox认为您的对象是一个字符串。您应指定dataType:"json"
以检索正确的JSON对象,您将能够枚举哪些属性。 Jquery允许您通过$.get
:
$.get(url,successFunction,"json")