如果我有这个JSON数据,怎样才能正确调用loadlist
函数?
我这样打电话但它不起作用:
loadlist($('select#selName').get(0), 'pull.php','data.name')
这是我的JSON数据:
{
data: [
{
id: "e0b0d8sc5ffd82e",
name: "John",
}
]
}
功能
function loadlist(selobj,url,nameattr) {
$(selobj).empty();
$.getJSON(url,{},function(data)
{
$(selobj).append(
$('<option>Select</option>')
.val('null')
);
$.each(data, function(i,obj)
{
$(selobj).append(
$('<option></option>')
.val(obj[nameattr])
.html(obj[nameattr]));
});
});
}
答案 0 :(得分:4)
您认为obj["data.name"]
等于obj.data.name
是错误的。 (等效项需要两次属性访问:obj["data"]["name"]
)
如果您认为可能需要进行嵌套属性检索,那么传递一个函数来检索属性可能会更好。 (如果您需要使用动态计算的值,这也会有效。)
function loadlist(selobj,url,getter) {
$(selobj).empty();
$.getJSON(url,{},function(data)
{
$(selobj).append(
$('<option>Select</option>')
.val('null')
);
$.each(data, function(i,obj)
{
var value = getter(obj);
$(selobj).append(
$('<option></option>')
.val(value)
.html(value));
});
});
}
// Call as follows:
loadlist($('select#selName').get(0), 'pull.php', function (obj) {
return obj.data.name;
});