2013-04-23 35 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')也已准备就绪。