我正在尝试通过AJAX更新多个数据,但我已尝试多次,但数据没有更改,请帮助修复它以便完美运行。
控制器:
function update_notif() {
$this->My_model->update_multiple();
$this->session->set_flashdata('msg',
'<div class="callout callout-warning">
<h4>Success</h4>
</div>');
}
型号:
function update_multiple() {
$update = $this->input->post('id_pesan');
for ($i=0; $i < count($update) ; $i++) {
$data = array('notif' => 0);
$this->db->where('id', $delete[$i]);
$this->db->update('my_table', $data);
}
}
查看:
<button type="button" id="btn_delete" ></button>
<table class="table table-hover table-striped">
<thead>
<tr>
<td><input id="selecctall" type="checkbox"></td>
<td>No</td>
<td>Name</td>
<td>Telp</td>
</tr>
</thead>
<tbody>
<?php foreach ($show_data as $row) { ?>
<tr>
<td><input type="checkbox" class="select_update" name="select_update[]" value="<?php echo $row->id; ?>"></td>
<td><?php echo $row->no; ?></td>
<td><?php echo $row->nama; ?></td>
<td><?php echo $row->telp; ?></td>
</tr>
</tbody>
<?php } } ?>
</table>
的Ajax:
var getVar = [];
$(".select_update:checked").each(function() {
getVar.push($(this).val());
});
$.ajax({
url : url,
type: 'POST',
data: 'id_pesan='+getVar,
dataType: 'json',
success: function(response)
{
if(response){
location.reload();
}
},
error: function (jqXHR, textStatus, errorThrown)
{
alert('Error');
}
});
答案 0 :(得分:2)
你的Ajax是怎样的?
我认为你必须将
$update = $this->input->post('select_id');
改为
$update = $this->input->post('select_update');
或$this->input->post('select_update[]');
因为您的复选框的name
属性而更改了
$this->db->where('id', $delete[$i]);
成
$this->db->where('id', $update[$i]);
或在foreach
function update_multiple() {
$updates = $this->input->post('select_update');
foreach ($updates as $update) {
$data = array('notif' => 0);
$this->db->where('id', $update);
$this->db->update('my_table', $data);
}
}
您的Ajax应如下所示 - 将范围保持在data
ajax
$.ajax({
url : url,
type: 'POST',
data: $(".select_update:checked").serialize(),
dataType: 'json',
success: function(response) { ... },
error: function (jqXHR, textStatus, errorThrown) { ... }
});
答案 1 :(得分:0)
您似乎已使用delete_multiple
方法粘贴了代码,这就是您使用$delete
代替$update
的原因
function update_multiple() {
$update = $this->input->post('select_id');
for ($i=0; $i < count($update) ; $i++) {
$data = array('notif' => 0);
$this->db->where('id', $delete[$i]);
$this->db->update('my_table', $data);
}
}
解决方案:
function update_multiple() {
$update = $this->input->post('select_id');
for ($i=0; $i < count($update) ; $i++) {
$data = array('notif' => 0);
$this->db->where('id', $update[$i]);
$this->db->update('my_table', $data);
}
}
受到UfguFugullu的启发,他显然也受到了我的回答的启发:
需要 select_update
而不是select_id