AJAX条件内附加

时间:2014-11-20 08:20:37

标签: javascript jquery ajax json getjson

我对API进行了Ajax调用,该API在子集中检索汽车列表及其相关规范。这通过我的追加显示在div中。我取值default_spec_id并尝试与每辆车的id进行比较。如果它相等,则将var defaultSet设置为'checked'。

然而,它根本没有检索到准确的结果,而且汽车的默认规格是将检查状态设置为错误的复选框。

我的问题基本上是,我可以做这个逻辑吗?

$.getJSON("{{ url('api/checkcars')}}", { option: $(this).val() }, 
function(data) {
    if ( data.success == true ) { 
        $.each(data.cars, function(key, value) { 
            var isDefault = data.default_spec_id;
            if (isDefault === value.id)  {
                defaultset =  'checked';
            } 
            $('#cars').append('<div><input type="radio" value="' + value.id +'" name="spec" ' +  defaultset +'> ' +  value.title +'</div>');
        });
    }
});

JSON

{
id: 7,
name: "renault clio",
default_spec_id: 8,
cars: [
   {
     id: 8,
     name: "Spec name 1",
     description: ""
     }
   },
   {
     id: 9,
     name: "Spec name 2",
     description: ""
   }
  }
 }
]
}

1 个答案:

答案 0 :(得分:1)

问题是您正在使用我们的defaultset关键字创建名为var的变量。

所以基本上它会将其分配给全球范围。

您的代码必须如下所示

$.getJSON("{{ url('api/checkcars')}}", { option: $(this).val() }, 
function(data) {
    if ( data.success == true ) { 
        $.each(data.cars, function(key, value) { 
            var isDefault = data.default_spec_id;
            var defaultset = "";
            if (isDefault === value.id)  {
                defaultset =  'checked';
            } 
            $('#cars').append('<div><input type="radio" value="' + value.id +'" name="spec" ' +  defaultset +'> ' +  value.title +'</div>');
        });
    }
});