我正在使用php codeigniter框架。
现在我想通过复选框删除我的表行项目选择。
选择多个项目后,单击删除按钮ajax请求调用控制器功能,然后删除进程工作。
我正在努力,但没有工作。
$('#delete_multiple').click(function(){
id=new Array()
id = $('#deletem #selector').val();
$.ajax({
type: "POST",
url: ""+baseUrl+"deletes/"+id,
success: function(msg) {
if(msg === "success" )
{
showPagination();
}
else if(msg === "error" )
{
$('#delete-server-error').show('slow').append("<p>Server is little bit busy. Please try few minute later.</p>");
}
else
{
$('#delete-server-error').show('slow').append(msg);
}
}
});
});
我的表单是
<form method="post" id="deletem" action="" >
<button type="button" class="btn btn-primary" id="delete_multiple" >Delete</button>
<input name="selector[]" type="checkbox" value="1">
<input name="selector[]" type="checkbox" value="2">
<input name="selector[]" type="checkbox" value="3">
</form>
我的控制器代码
function deletes($id)
{
if($id != 0)
{
if($this->retailer_model->deletes($id))
echo "success";
else
echo "error";
}
else
{
redirect('retailer');
}
}
我的型号代码
function deletes($id)
{
return $status1 = $this->db->delete('image', array('id' => $id));
}
当我点击删除按钮然后没有删除。使用firebug我看到值传递给控制器。
答案 0 :(得分:1)
您可以序列化表单,然后您将获得所有选中的复选框
url: ""+baseUrl+"deletes",
data:$('#deletem').serialize(),
不需要这些行
id=new Array()
id = $('#deletem #selector').val();
并在控制器中执行此操作
foreach ($_POST['selector'] as $id)
{
$this->retailer_model->deletes($id)
}
答案 1 :(得分:0)
您的ID不会返回值,因为您没有定位复选框。
试试这个......
var ids = $('input[name="selector[]"]').val();
此外,如果您要发送数组,则需要发送一些数据,而不是通过URL传递数据。
例如:
url: ""+baseUrl+"deletes",
data: {ids: ids},
如果要发送多个ID,还需要在PHP中进行循环,然后在每次迭代时调用deletes方法。
例如:
foreach ($_POST['ids'] as $id) {
$this->retailer_model->deletes($id)
}
答案 2 :(得分:0)
您正在使用名称选择器,而不是ID。
<input name="selector[]" type="checkbox" value="1">
使用此:
id = $('#deletem input[name="selector"]').val();
答案 3 :(得分:0)
您没有正确获取控制器中id的值 首先你发送这样的数据
$.ajax({
type: "POST",
url: "<?php echo base_url('your_controller/your_method'); ?>",
data: {"id": id},
然后在你的控制器中得到它
$_POST['id']'
$this->retailer_model->deletes($_POST['id'])
and in your model
function deletes()
{
and print_r($id);
/*check if values are in array
then*/
foreach ($id as $idd){
return $status1 = $this->db->delete('image', array('id' => $idd));
}
}
and bingo