【问题标题】:Am i passing the value correctly to my controller from jquery?我是否将值从 jquery 正确传递给我的控制器?
【发布时间】:2011-04-12 00:00:26
【问题描述】:

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

【问题讨论】:

    标签: php jquery codeigniter parameter-passing


    【解决方案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');
    

    【讨论】:

    • 太棒了。您之前尝试这样做的方式只有在您执行 GET 请求并使用 Codeigniter 对 uri 段的内置支持时才有效。
    【解决方案2】:

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

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

    【讨论】:

    • 所以这意味着参数没有被传递给你的函数。因此如上所述,直接使用 $_POST 来获取您的参数。这是你需要做的唯一改变。
    【解决方案3】:

    可能是因为您使用了两次变量名“数据”。尝试将 var data 重命名为 var mydata。

    【讨论】:

      【解决方案4】:

      您传递数据的方式是错误的。这是您应该设置数据的方式。 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 框架。但是由于您正在发布有关操作的帖子,因此您始终可以通过以下方式获取数据:

      $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 实现中的 php 中存在类似的内容,则有 1 个)只需添加该路线。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-09
        相关资源
        最近更新 更多