我想将数据附加到选择框。但是,我收到了这个错误......
“错误:$(”“)。attr(”value“,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"
}
]
}
我的错是什么? 谢谢你......
答案 0 :(得分:4)
您的JSON密钥在其名称后面包含空格,因此密钥为"guruMapelId "
,而不是"guruMapelId"
。您可以从JSON密钥中删除空格,也可以使用var guruMapelId = v["guruMapelId "];
和var guruNama = v["guruNama "];
代替。
答案 1 :(得分:2)
这是一个棘手的问题。如果您将undefined
传递给attr
(attr('value', undefined)
)或html
(html(undefined)
),则实际上与调用attr('value')
或{ {1}},它们都返回一个字符串而不是一个jQuery对象。
但等等,你说,我没有传递html()
,我传递了undefined
和guruMapelId
的值!< / em>的
让我们仔细看看: JSON中的键都有尾随空格 。这意味着,guruNama
不存在(因此v.guruMapelId
)。您必须使用
undefined
v['guruMapelId '] // <-- note the trailing space
相同。但更好的方法是创建适当的JSON。
答案 2 :(得分:0)
检查你的$ .getJSON中的内容(只需使用alert(guruMapelId)和guruNama),然后你可以选择如下:
$('<option />').val(guruMapelId).text(guruNama)appendTo(dataSelect);