0

我有一个变量“习惯”,它被分配了一些默认值。当页面加载时,我使用 ajax 从数据库中以 json 格式获取值。当 ajax 调用成功时,我使用$.each()函数交叉检查Habits变量中的值。当我在$.each()函数中的if条件中给出r.index时它不起作用,但是当我给出r.Smokingr.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"}
4

1 回答 1

3

我可以看到两个问题

  1. 要设置选中的属性,您需要使用 .prop() 而不是 .attr()
  2. 由于index是一个保存实际键名的变量,因此您需要使用括号表示法作为成员运算符

尝试

$.ajax {
    url: 'getvalue',
    data: data,
    type: 'POST',
    dataType: 'json',
    success: function (r) {
        $.each(Habits, function (index, value) {
            $("#" + index).prop('checked', r[index] == "Yes");
        });
    }
}
于 2013-09-24T06:55:09.310 回答