我正在尝试通过ajax获取一些数据。其中一个数据确定默认情况下是否应选中复选框。如果返回的变量isVisible
为1
,则应检查它是否为0
,然后应取消选中它。这是代码:
$.getJSON(myUrl, function(result)
{
isVisible = result.isVisible;
// snip...
} );
稍后在代码中:
var isChecked = (isVisible) ? true : false;
$("#visible").attr('checked', isChecked);
问题在于,无论isVisible
是否设置为1或0,checked
变量始终被评估为true。我真的不确定问题是什么。也许isVisible
被视为一个字符串?我该如何解决这个问题?
答案 0 :(得分:3)
可能isVisible
是一个字符串。 "0"
是Javascript中的真值。请改用:
var checked = (isVisible==="1") ? true : false;
答案 1 :(得分:1)
怎么样
isVisible = (result.isVisible == "1")
答案 2 :(得分:0)
Ajax是异步的。你需要使用回调。
$.getJSON(myUrl, function(result)
{
isVisible = result.isVisible;
// snip...
callback_setvis();
} );
function callback_setvis(){
var ischecked = (isVisible) ? true : false;
$("#visible").attr('checked', ischecked);
}
再次审核您的问题后,上面的内容似乎无效。
这可能是attr
vs prop
如果您使用的是jQuery 1.6或更高版本,则应执行以下操作:
$("#visible").prop('checked', ischecked);
答案 3 :(得分:0)
我猜“isVisible”是一个字符串而不是一个数字,所以它通过了测试。 试试parseint(isVisible,10),让我知道