2013-04-23 68 views
-1

我混淆了爲什麼我這個簡單的代碼是錯誤的。jquery load json當文檔加載

我只想列出JSON數據在選擇文件加載時。 這是我的jQuery代碼:

<script> 
$(document).ready(function(){ 
     $("#choose").load(function(event){ 
      $.getJSON('data/colors.json', function(jd) { 
       $('#choose').html('<option value="' + jd.name'">' + jd.name + '</option>'); 
       $('#choose').append('<option value="' + jd.name'">' + jd.name + '</option>'); 
      }); 
     }); 
    }); 
</script> 

這是我的html:

<select id="choose" style="width:200px"> 

    </select> 

和最後這是我的JSON文件:

[ 
{ 
"name": "Yoza", 
"age" : "22", 
"sex": "male" 
}, 
{ 
"name": "nayla", 
"age" : "18", 
"sex": "female" 
} 
] 

如何加載與每個JSON。所以我可以加載更多的數據。

+0

select元素沒有加載事件。 – 2013-04-23 15:21:48

回答

2

嘗試

$(function(){ 

    $.getJSON('data.json', function(jd) { 
     $.each(jd, function(i, v){ 
      $('#choose').append('<option value="' + v.name + '">' + v.name + '</option>'); 
     }) 
    }) 

}); 

演示:Fiddle

+0

嘿,它的工作原理。非常感謝。但如何在頁面加載時使json加載? – yozawiratama 2013-04-23 15:23:59

+0

你是什麼意思通過頁面加載 – 2013-04-23 15:26:56

+0

只是包裝代碼裏面準備好 – 2013-04-23 15:28:56

0

試試這個

 var data = []; 

    $.getJSON('data/colors.json', function(jd) { 

      $.each(jd, function(k,v){ 

       data.push('<option value="' + v.name'">' + v.name + '</option>'); 

      }); 
      $('#choose').append(data.join('')); 
     }); 
+0

$ .getJSON默認是異步的,所以你必須把$('#choose')。append(data.join(''));在每個循環之後,但仍然在getJSON回調函數內。最後,爲什麼要使用數據? – 2013-04-23 15:21:22

+0

謝謝你的擡頭。 – 2013-04-23 15:22:01

0

爲什麼你等待$('#choose')被加載?當document準備就緒時,您的功能就會執行,因此$('#choose')也已準備就緒。