Правильно ли я передаю значение на мой контроллер из jquery? - PullRequest
1 голос
/ 14 сентября 2010

Я делаю удаление таблицы, используя 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();});
                   }
             });                
        }
    });

Я правильно получаю значение идентификатора, но мой параметр данных не передается в мой контроллер,

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 ]

1 голос
/ 14 сентября 2010

Вы публикуете данные, поэтому вы можете получить следующий идентификатор:

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');
0 голосов
/ 14 сентября 2010

Возможно, это потому, что вы дважды используете имя переменной data. Попробуйте переименовать данные var в var mydata.

0 голосов
/ 14 сентября 2010

Способ передачи данных неверен.Это способ, которым вы должны устанавливать данные.var data = {id: id};

в вашем случае позвольте мне не использовать переменную в действии публикации и покажу вам, как это делается.

$.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();});
                   }
             });     

Редактировать: После того, как вы изменили свойкод для правильной передачи данных.

Эй, я не следовал за MVC framwework в php.но поскольку вы делаете сообщение об этом действии, вы всегда можете получить данные следующим образом:

$id=$_POST['id']

, а затем вы можете использовать этот идентификатор.

Также, если вы все еще хотите использоватьфункция:

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

просто измените действие uri к существующему + / т.е. добавьте идентификатор в конец и в вашей карте маршрутов (если в php в реализации .nets есть что-то подобное, то просто 1)добавить этот маршрут.

0 голосов
/ 14 сентября 2010

Изменение идентификатора на $ id в параметре функции контроллера означает, что ваша функция должна быть

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