[英]Strange behaviour with JQuery and Console.log()
我寫了一點JavaScript,這種行為對我來說無法解釋。
var allPois = [];
$.getJSON( "pois.json", function( data ) {
$.each( data, function( i, poi ) {
allPois[poi.id] = poi;
});
console.log(allPois["abc"]);
});
我基本上得到一個JSON-File,然后將所有現有的entrys放入'allPois'變量中。
這個例子有效。 它在控制台中顯示對象,沒有任何預期的問題。 但下一個沒有。
var allPois = [];
$.getJSON( "pois.json", function( data ) {
$.each( data, function( i, poi ) {
allPois[poi.id] = poi;
});
});
console.log(allPois["abc"]);
注意console.log() - 語句的位置。 控制台顯示“未定義”。 我用Firefox和Chrome測試了它。 這里有什么問題?
非常感謝你!
zuris57
$.getJSON
是異步的; 包含函數的執行不會停止,並且默認情況下等待Ajax請求完成。 這就是回調存在的原因 - 當你真正使用請求的響應時它會被回調。
順便說一句,看起來你應該這樣做:
var allPois = {}; // Object, not array
$.getJSON( "pois.json", function( data ) {
$.each( data, function( i, poi ) {
allPois[poi.id] = poi;
});
console.log(allPois.abc);
});
getJSON
是一個AJAX函數。 AJAX中的第一個A代表“異步”。 作為一般規則,如果函數接受回調,那么任何依賴於結果的東西都必須在該回調中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.