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

私が見ることができる2つの問題があります

  1. チェックされたプロパティを設定するには、.attr() の代わりに .prop() を使用する必要があります
  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 に答える