0

我有这个代码:

$.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”国家名称:“英格兰”generation_high:18 generation_low:1 id:8258 名称:“Wembley Central”parent_area:2488 类型:“LBW”type_name:“ London borough ward" 原型:对象

但是,在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": "England ", "类型": "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 行)

e

index_fb.js(第 48 行)

n

index_fb.js(第 48 行)

index_fb.js(第 48 行)

_

index_fb.js(第 48 行)

一个

index_fb.js(第 48 行)

r

index_fb.js(第 48 行)

e

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(response) 是正确的,但它似乎包含以下每个字母:

for (var k in response) {

k = Firefox 中的数字,与 chrome 一样,它将 k 处理为整数 8​​258。

我如何解决这个问题,使其适用于两者?

谢谢

编辑

这是新代码:仍然是同样的问题:

$.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 用于非安全源时存在问题。

到目前为止没有快乐:(

4

1 回答 1

2

Firefox 认为您的对象是一个字符串。您应该指定dataType:"json"检索正确的 JSON 对象,您将能够枚举哪些属性。Jquery 允许您通过以下的最终参数设置数据类型$.get

$.get(url,successFunction,"json")
于 2012-08-31T14:50:58.240 回答