我遇到了一个问题,经过数小时的寻找答案和摆弄,我无法让它发挥作用。
我的问题。我有一个MYSQL数据库。当我通过PHP从数据库中提取"布尔"数据时,它就很好了。PHP将1和0的"字符串"解释为True和False。然而,当我检索这些数据以使用Ajax填充表单时,我遇到了一个问题。
字符串显示为:{"id":"478","name":"aaaa","manager":"385","usertype":"0","typeone":"零","typetwo":"1","type three":"%1"}
这很好。直到我尝试使用以下数据填充表单:
$.each(data, function (name, val) {
var $el = $('[id="e' + name + '"]'),
type = $el.attr('type');
switch (type) {
case 'checkbox':
$el.filter('[value="' + Boolean(val) + '"]').attr('checked', 'checked');
break;
case 'radio':
$el.filter('[value="' + val + '"]').attr('checked', 'checked');
break;
default:
$el.val(val);
}
});
关于这个http://jsfiddle.net/z66XF/11/您可以看到,当数据来自我的数据库,并且"布尔"值以字符串形式给出时,用于勾选复选框的数据就不起作用了。
"0"最终被评估为true。
有没有什么方法可以转换它,或者让javascript将其视为布尔值?
您可以使用一元加运算符将字符串转换为数字
Boolean(+val)
基本示例:
var one = "1";
var zero = "0";
console.log("one", one, Boolean(+one)); //one "1" true
console.log("zero", zero, Boolean(+zero)); //zero 0 false
JSFiddle:
http://jsfiddle.net/JJRP3/