#jquery #json
#jquery #json
Вопрос:
Я хочу добавить данные в selectbox. Но я получил эту ошибку…
«Ошибка: $(«»).attr(«значение», guruMapelId).html не является
исходным файлом функции: http://localhost:8084/controller?aksi=kurikulum
Строка: 5″
это мой js-код:
function dataGuruMapelSelect(dataSelect){
$.getJSON("controller", "aksi=dataGuruMapel", function(json){
$.each(json.guruMapelData, function(k,v){
var guruMapelId = v.guruMapelId;
var guruNama = v.guruNama ;
$('<option />').attr('value',guruMapelId).html(guruNama).appendTo(dataSelect);
})
});
}
И это данные JSON
{
"guruMapelData": [
{
"guruMapelId ": "1",
"guruNip ": "1331/001",
"guruNama ": "HARI BUDIYONO DRS.",
"mapelNama ": "PPKn",
"tahunAjarNama ": "2010/2011",
"mapelKategoriNama ": "Normatif",
"mapelId ": "1"
},
{
"guruMapelId ": "2",
"guruNip ": "1331/002",
"guruNama ": "PENI WARDAYANI DRA",
"mapelNama ": "Kewirausahaan",
"tahunAjarNama ": "2010/2011",
"mapelKategoriNama ": "Produktif",
"mapelId ": "2"
}
]
}
В чем моя вина?
Спасибо ранее…
Ответ №1:
Ваши ключи JSON содержат пробелы после своих имен, поэтому ключом является "guruMapelId "
, а не "guruMapelId"
. Вы можете либо убрать пробел из ваших ключей JSON, либо использовать вместо него var guruMapelId = v["guruMapelId "];
и var guruNama = v["guruNama "];
.
Ответ №2:
Это было непросто. Если вы передадите undefined
в attr
( attr('value', undefined)
) или html
( html(undefined)
), это фактически будет то же самое, что вызов attr('value')
or html()
, которые оба возвращают строку, а не объект jQuery.
Но подождите, вы говорите, я не передаю undefined
, я передаю значения guruMapelId
и guruNama
!
Давайте посмотрим поближе: у всех ключей в JSON есть конечный пробел. Это означает, что v.guruMapelId
не существует (следовательно, есть undefined
). Вам пришлось бы обращаться к данным с
v['guruMapelId '] // <-- note the trailing space
То же самое для guruNama
. Но лучше было бы создать правильный JSON.
Ответ №3:
Проверьте, что вы получаете в своем вызове $.getJSON (просто используйте alert (guruMapelId) и guruNama), затем вы можете просто указать свой вариант следующим образом:
$('<option />').val(guruMapelId).text(guruNama)appendTo(dataSelect);