我是否正确地将值从jquery传递给我的控制器?

时间:2010-09-14 05:19:44

标签: php jquery codeigniter parameter-passing

我正在使用jquery,

对表进行删除
$('table#chkbox td a.delete').click(function()
    {
        if (confirm("Are you sure you want to delete this row?"))
        {
            var id = $(this).parent().attr('id');

            var parent = $(this).parent().parent();

            $.ajax(
            {
                   type: "POST",
                   url: "<?php echo base_url().'index.php/libraryController/librarydelete' ?>",
                   data: { 'id': id },
                   cache: false,

                   success: function()
                   {
                        parent.fadeOut('slow', function() {$(this).remove();});
                   }
             });                
        }
    });

我正确获取了id值,但我的数据参数没有传递给我的控制器,

function librarydelete($id)
{
$del = $id;
echo $del; 
$this->librarymodel->deletebook_issue($id);
$this->session->set_flashdata('response','Deleted successfully');
redirect('libraryController/loadmagazinedetails');
}

任何建议......

我收到了错误,

Missing argument 1 for libraryController::librarydelete()Undefined variable: id

4 个答案:

答案 0 :(得分:1)

您正在发布数据,因此您可以获得如下ID:

function librarydelete()
{
    $del = $_POST['id'];
    echo $del; 
    $this->librarymodel->deletebook_issue($_POST['id']);
    $this->session->set_flashdata('response','Deleted successfully');
    redirect('libraryController/loadmagazinedetails');
}

看起来你正在使用codeigniter,所以这会更好:

$del = $this->input->post('id');

答案 1 :(得分:0)

在控制器功能参数中将id更改为$ id 意思是,你的功能应该是

function librarydelete($id)
{
    $del = $id;
    echo $del; 
    $this->librarymodel->deletebook_issue($id);
    $this->session->set_flashdata('response','Deleted successfully');
    redirect('libraryController/loadmagazinedetails');
}

答案 2 :(得分:0)

也许是因为您使用变量名称'data'两次。尝试将var数据重命名为var mydata。

答案 3 :(得分:0)

传递数据的方式是错误的。这是您应该设置数据的方式。 var data = {id:id};

在你的情况下,让我不要在post动作中使用变量,并告诉你它是如何完成的。

$.ajax(
            {
                   type: "POST",
                   url: "<?php echo base_url().'index.php/libraryController/librarydelete' ?>",
                   data: {id:id},
                   cache: false,

                   success: function()
                   {
                        parent.fadeOut('slow', function() {$(this).remove();});
                   }
             });     

编辑:修改代码后以正确的方式传递数据。

嘿,我没有在php中关注MVC framwework。但由于您正在对操作发布帖子,因此您始终可以通过以下方式获取数据:

$id=$_POST['id']

然后你可以使用这个id。

此外,如果您仍想使用该功能:

function librarydelete($id)
{
$del = $id;
echo $del; 
$this->librarymodel->deletebook_issue($id);
$this->session->set_flashdata('response','Deleted successfully');
redirect('libraryController/loadmagazinedetails');
}

只需将uri操作修改为existingurl + /即将id附加到结尾和路由映射中(如果在.nets实现中存在类似这样的内容,则有1)只需添加该路由。