删除多行PHP Ajax无法正常工作

时间:2014-09-18 11:31:51

标签: php jquery ajax codeigniter

我正在使用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我看到值传递给控制器​​。

4 个答案:

答案 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