2013-04-23 2 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

элементы выбора не имеют события загрузки. –

ответ

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

+0

Что вы подразумеваете под pageload –

+0

просто оберните код внутри готовым –

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 по умолчанию isynch, поэтому вам нужно поставить $ ('# choose'). Append (data.join ('')); сразу после каждого цикла, но все еще внутри функции обратного вызова getJSON. Наконец, зачем использовать данные? –

+0

Спасибо за головы. –

0

почему вы ждете $('#choose'), чтобы нагружать? Ваша функция выполняется, когда document готов, поэтому $('#choose') готов.

Смежные вопросы