2015-11-11 36 views
-2

我正在使用$.getJSON$.each來調用JSON終點並檢索數據。當我調用數據時,我將它放在一個對象中,然後在控制檯中檢查它。但是,當我檢查控制檯時,只有一個條目。

爲什麼只有一個條目被返回?我究竟做錯了什麼?

JSON endpoint

Fiddle

JavaScript的:

$(document).ready(function() { 
    var url = 
     'https://data.montgomerycountymd.gov/resource/housing-code-enforcement.json?street_number=9903'; 
    var myJson = {}; 
    $.getJSON(url, function(data) { 
     $.each(data, function(i, field) { 
      myJson = data; 
     }); 
     console.log(myJson); 
    }); 
}); 
+9

這是因爲您在每次迭代中都覆蓋了'myJson'變量。你的'console.log'只會顯示數組中的* last *項。處理'$ .each'循環中的每個對象*。 –

+0

@adin如果你只是想複製接收到的數據,然後你不需要使用'each',你到底用'myJson'做了什麼。接收到的數據是一個數組,並且您想將其映射到一個對象? – ste2425

+0

你的端點只返回一個對象,同樣,它看起來應該訪問你的'each'中的'feild',而不是'data' - http://jsfiddle.net/5jwotwg7/1/ – Und3rTow

回答

2

地獄看到,因爲每個人都重複自己的想法身份證進入行動。

由於@RoyMcCrosan表示您的數據值是一個數組,但是您的myJson變量是一個對象。你在做的是循環訪問數組,將數組中的每個單元放入myJson變量(這裏是重要的位),覆蓋之前的值。所以你最終只能得到數組中的最後一個值。

現在不知道你想要做什麼用的數據,我們真的不能說你應該做的,但這裏有幾個常見的情況IVE不得不這樣做:

如果你想簡單的數據和作品的拷貝與它其他地方作爲數組簡單地報廢$.each

var myJson = []; 
$.getJSON(url, function(data) { 
    myJson = data; 
    console.log(myJson); 
}); 

如果你想將數據映射一個數組,但以不同的格式來結束:

var myJson = []; 
$.getJSON(url, function(data) { 
    myJson = data.map(function (d) { 
     return {}; //Some modified object 
    }); 
    console.log(myJson); 
}); 

如果要迭代數組並從每個對象中提取屬性以將其添加到您的變量myJson變量;

var myJson = {}; 
$.getJSON(url, function(data) { 
    data.forEach(function (d) { 
     //Some logic for figuring property name. 
     var i = 'FieldName'; 
     myJson[i] = d[i]; 
    }); 
    console.log(myJson); 
}); 

最後作爲data是使用本地循環方法如.forEachfor環路的陣列。他們會更快,然後$.each。另外技術上myJson不是JSON,它本身就是一個JavaScript對象。

0
$(document).ready(function() { 
    var url = 
     'https://data.montgomerycountymd.gov/resource/housing-code-enforcement.json?street_number=9903'; 
    var myJson = {}; 
    $.getJSON(url, function(data) { 
     $.each(data, function(i, field) { 
      myJson = data; 
      console.log(myJson); 
    }); 

}); 

});

+0

Ah..dammit。 @Rory McCrosan擊敗了我! –

0

您需要將您的console.log語句每次迭代裏面,但是,請注意,您的要求只返回一個JSON文件入手:

var url = 
 
     'https://data.montgomerycountymd.gov/resource/housing-code-enforcement.json?street_number=9903'; 
 
    var myJson = {}; 
 
    $.getJSON(url, function(data) { 
 
     $.each(data, function(i, field) { 
 
     myJson = data; 
 
     document.write(JSON.stringify(myJson, undefined, 2)+'<br>') 
 
     }); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>