使用codeigniter ajax删除数据库条目

时间:2014-05-16 16:21:49

标签: php jquery ajax codeigniter

我有这个脚本

  <script>
$('a[name=deleteButton]').on('click', function () {
    arr=[];
    var arr = $("input[name='post[]']:checked").map(function() { 
            return this.value; 
          }).get();
          var content = $(this).parents('tr').find('.key').html();
          alert(content);
          $.ajax({
            type: "post",
            url: "http://localhost/partner/app/deleteRowUsingApiKey/delete",
            cache: false,               
            data:{empId : content},
            success: function(response){                        
            try{        
                if(response){
                    parent.slideUp('slow', function() {$(this).remove();});
                            alert(response.responseText);
                }                   

            }catch(e) {     
                alert('Exception while request..');
            }       
            },
            error: function(){                      
                alert('Error while request..');
            }
         });


});

</script>

这是删除控制器

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class DeleteRowUsingApiKey extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }


    public function delete(){           
        $empId =  $this->input->post('empId');      


        $status = "true";

        echo $status;

    }
}

这是视图

<tbody id="dashboard_table_body">
                            <?php if($admin_activation_status!='disabled' && $tot!=0)
                                    { $i=0; foreach ($connct_data as $row): ?>
                            <tr>
                                <td><input type='checkbox' name='post[]' value="<?php echo ++$i; ?>"></td>
                                <td><?php echo date('d-M-Y', strtotime($row['connct_CreationTime']));?></td>
                                <td><?php echo $row['connct_serviceName'];?></td>
                                <td><?php echo $row['connct_websiteUrl'];?></td>
                                <td class="key"><?php echo $row['connct_passKey'];?></td>
                                <td><?php echo $row['responseURL'];?></td>
                                <td><a name="deleteButton" href=""><i class="icon-remove text-danger"></i></a></td>
                                <!-- <td align='center' width='30'><a data-toggle='modal' href='#' ><i class='icon-remove text-danger'></i></a></td> -->
                            </tr>
                            <?php endforeach; } ?>
                        </tbody>

我能够提醒变量内容,内容的价值是我想要传递给控制器​​的。但是我无法与控制器通信。它不会返回&#34; true&#34;。< / p>

我总是在请求时遇到错误&#39;相反,如果进入真的&#39;条件。

我正在做的是错的。我的代码中有任何错误。请帮我解决这个问题。

谢谢

2 个答案:

答案 0 :(得分:0)

您遵循的方法是正确的。检查一下config / routes.php(无论你是否给出了

正确的控制器路径。)

**In the controller:**

return true;

if(response){ } [is correct method in ajax]

答案 1 :(得分:0)

data:'empId=' + content

应该是

data: {empId: content}

这会正确地将数据从js发送到服务器

如果您需要更多变量,那么您应该这样做:

data: {empId: content, nameofVar2: valueOfVar2, nameOfVar3: valueOfVar3}

然后在控制器中放入:

$empId = $this->input->post('empId');
$nameofVar2 = $this->input->post('nameofVar2');
$nameofVar3 = $this->input->post('nameofVar3');
etc...

您还应该在控制器中对您的返回值进行json编码:

echo json_encode($status);

并明确设置在jQuery中返回的数据类型(所以你绝对肯定的是什么作为返回值)

因此在jQuery中应该是这样的:

$.ajax({
    type: "post",
    url: "http://localhost/partner/app/deleteRowUsingApiKey/delete",
    cache: false,               
    data: {empId: content},
    dataType: 'json'

如果不起作用,您可以尝试:

error: function(ts){                      
                alert(ts.responseText);
            }

并查看错误中的实际响应。

<强>更新

我会试试这个:

我有这个脚本

  <script>
$('a[name=deleteButton]').on('click', function () {
    arr=[];
    var arr = $("input[name='post[]']:checked").map(function() { 
            return this.value; 
          }).get();
          var content = $(this).parents('tr').find('.key').html();
          alert(content);
          $.ajax({
            type: "post",
            url: "http://localhost/partner/app/deleteRowUsingApiKey/delete",
            cache: false,               
            data:{empId : content},
                    dataType: 'json',
            success: function(response){                        
                alert('success function');
                    alert('respone from success function=' + response);
            },
            error: function(){                      
                alert('Error while request..');
            }
         });


});

</script>

这是删除控制器

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
class DeleteRowUsingApiKey extends CI_Controller
{
    function __construct()
    {
        parent::__construct();
    }


    public function delete(){           
        $empId =  $this->input->post('empId');      


        $status = "true";

        echo json_encode($status);

    }
}