【问题标题】:Radio Button is not updating in database through ajax in codeigniter单选按钮未通过 codeigniter 中的 ajax 在数据库中更新
【发布时间】:2023-03-16 20:55:02
【问题描述】:

单选按钮不起作用,当我选择第二个选项时,它将停留在第一个选项。

ajax 代码:

$(document).ready(function(){
$('#btn_update').on('click',function(){
        var id = $('#id').val();
        var fname = $('#fname').val();
        var lname = $('#lname').val();
        var mobile = $('#mobile').val();
        var dob = $('#dob').val();
        var gender = $('#gender').val();
        $.ajax({
            type : "POST",
            url  : "<?php echo base_url('home/update_profile')?>",
            dataType : "JSON",
            data : {id:<?php echo $row->id ?>, fname:fname, lname:lname, mobile:mobile, dob:dob, gender:gender},
            success: function(data){
                //alert(data);
            }
        },window.location.href = '<?php echo base_url('home/list_user')?>');
        return false;
    });

})

我的看法:

<div class="form-group">
                                            <h4>Gender</h4>
                                            <div class="radio">
                                                <label>
                                                  <input type="radio" name="gender" id="gender" value="male"<?php if($row->gender == 'male') echo "checked"; ?>><span style="font-weight: bolder; font-size: 15px;">Male</span>
                                                </label>
                                            </div>
                                            <div class="radio">
                                                <label>
                                                <input type="radio" name="gender" id="gender" value="female"<?php if($row->gender == 'female') echo "checked"; ?>><span style="font-weight: bolder; font-size: 15px;">Female</span>
                                                </label>
                                            </div>
                                            <span class="text-danger"><?php echo form_error("gender");?></span>
                                        </div><br>

我的控制器:

$data=array(
              'id' => $this->input->post('id'),
              'fname' => $this->input->post('fname'),
              'lname' => $this->input->post('lname'),
              'mobile' => $this->input->post('mobile'),
              'dob' => $this->input->post('dob'),
              'gender' => $this->input->post('gender')
            );
            $this->user->update_data($data, $this->input->post("id"));
            echo json_encode($data);

还有我的模特:

public function update_data($data, $id)
    {
        $this->db->set($data);
        $this->db->where("id", $id);
        $result = $this->db->update("user");
        return $result;
    }

这是单选按钮的所有代码,它没有在数据库中更新。 这是他们的第一个选择是男性而不是女性

【问题讨论】:

  • id="gender" 应该是唯一的
  • 意思是我不明白你

标签: php ajax codeigniter radio-button


【解决方案1】:

更改每个 input 标签中的 ID 以使它们不同:

<div class="form-group">
 <input type="radio" name="gender" id="gender_m" value="male"<?php if($row->gender == 'male') echo "checked"; ?>><span style="font-weight: bolder; font-size: 15px;">Male</span>
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="gender" id="gender_f" value="female"<?php if($row->gender == 'female') echo "checked"; ?>><span style="font-weight: bolder; font-size: 15px;">Female</span>
</label>
</div>
<span class="text-danger"><?php echo form_error("gender");?></span>
</div><br>

您有两个具有相同 ID 的输入,这很糟糕。 当您通过 $('#gender').val() 询问 DOM 时,它采用唯一的第一个值。据我了解,您应该得到checked

var gender = $('input#gender_m:checked').val() ? 'male' : 'female';

【讨论】:

  • 那我也得改ajax了
  • 是的,在ajax 之前,您应该定义哪个是checked,并通过不同的id 来执行此操作。一分钟,我会给你这个案例
  • @ParthKhatri,我已经修复了答案,用我的替换你的var gender,你也可以拿我的HTML,它之前已经修复了
猜你喜欢
  • 1970-01-01
  • 2012-01-23
  • 2016-09-26
  • 1970-01-01
  • 2018-02-14
  • 2013-02-23
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
相关资源
最近更新 更多