【问题标题】:Deleting multiple rows PHP Ajax not work correctly删除多行 PHP Ajax 无法正常工作
【发布时间】:2014-09-18 11:31:50
【问题描述】:

我正在使用 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));

}

当我单击删除按钮时,没有任何内容被删除。使用萤火虫我看到注意到值传递给控制器​​。

【问题讨论】:

  • 记录$('#deletem #selector').val(); 有什么价值?还有id=new Array() 在那个代码块中做什么?没有任何意义。没有var末尾没有分号!!。

标签: php jquery ajax codeigniter


【解决方案1】:

你可以序列化一个表单,你会得到所有选中的复选框

url: ""+baseUrl+"deletes",
data:$('#deletem').serialize(),

不需要这些行

id=new Array()
id = $('#deletem #selector').val();

并在控制器中执行此操作

foreach ($_POST['selector'] as $id) 
{
  $this->retailer_model->deletes($id)
}

【讨论】:

  • 只需将其放入控制器中 if($this->retailer_model->deletes($_POST['selector'])){echo "success";}else{ echo "error";} 并替换模型中的这一行 $this->db->where_in('id', $id);return $status1 = $this->db->delete('image');
【解决方案2】:

您使用的是名称选择器,而不是 id。

<input name="selector[]" type="checkbox" value="1">

使用这个:

id = $('#deletem input[name="selector"]').val();

【讨论】:

    【解决方案3】:

    您没有在控制器中正确获取 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
    

    【讨论】:

      【解决方案4】:

      您的 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)
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-09
        相关资源
        最近更新 更多