我有一个变量'Habits',它被分配了一些默认值。当页面加载时,我使用ajax以json格式从数据库中获取值。当ajax调用成功时,我使用 $。each()函数交叉检查 Habits 变量中的值。当我在 $。each()函数中的 if 条件中给出 r.index 时它不起作用,但是当我给出<时它正在工作< strong> r.Smoking 或 r.Drinking 。请帮我解决这个问题
定义了习惯变量:
var Habits={
"Smoking":"No",
"Drinking":"No"
}
我的ajax功能
$.ajax{
url:'getvalue',
data:data,
type:'POST',
dataType:'json',
success:function(r)
{
$.each(Habits,function(index, value)
{
if(r.index=="Yes")
{
$("#"+index).attr('checked=checked');
}
else
{
$("#"+index).removeAttr('checked');
}
}
}
}
json数据:
{"Smoking":"Yes","Drinking":"Yes"}
答案 0 :(得分:3)
我可以看到两个问题
index
是包含实际密钥名称的变量,因此您需要使用bracket notation作为member operator 尝试
$.ajax {
url: 'getvalue',
data: data,
type: 'POST',
dataType: 'json',
success: function (r) {
$.each(Habits, function (index, value) {
$("#" + index).prop('checked', r[index] == "Yes");
});
}
}