我在CodeIgniter中检查复选框的值时有问题。我试图实现在这里找到的解决方案:Codeigniter检查复选框值。无论复选框是否被选中,下面的代码永远不会求值为true。如果我在输入中添加value="1",它的计算结果总是为true。
我的观点:
....
<input name="Tuesday" id="Tuesday" type="checkbox" />
....
<script type="text/javascript">
.on('finished', function(e) {
var form_data = {
Tuesday: $('#Tuesday').val(),
ajax: '1'
};
$.ajax({
url: "<?php echo site_url('opportunity/create_opportunity'); ?>",
type: 'POST',
data: form_data,
dataType: 'json',
cache: false
});
})
</script>
我的控制器:
function create_opportunity() {
if($this->input->post('ajax')) {
$checked = $this->input->post('Tuesday');
if((int) $checked == 1) {
$Tuesday = array(
'Week_Day_Id' => 2,
'Opportunity_Id' => 18,
'Preferred' => $checked
);
}
$this->ion_auth_model->create_opportunity($Opportunity, $Tuesday);
}
}
感谢您提供的帮助
在您的AJAX中,您正在使用$('#Tuesday').val()
,它将在HTML中查找value
属性。因为value属性是空的,所以它可能发送的是空的。
解决方案是使用$('#Tuesday').is(':checked')
,它将返回一个布尔值。
在PHP中只使用if ($checked == TRUE)
看起来你只检查值,我实际上会检查是否使用jquery检查或不发送该值。所以不用这个:
.on('finished', function(e) {
var form_data = {
Tuesday: $('#Tuesday').val(),
ajax: '1'
};
我会这样做:
.on('finished', function(e) {
var form_data = {
Tuesday: $('#Tuesday').prop('checked') // this should send a true or false value
ajax: '1'
};