Вызов AJAX возвращает false, когда я ожидаю true - PullRequest
0 голосов
/ 01 сентября 2011

Я делаю вызов ajax в приложении для воспламенения кода. Код JS следующий:

function removeGuest(guestID)
{
    if(confirm("Are you sure you want to delete this guest and his preferences?"))
    {
        $.ajax({
            type: "POST",
            url: "/event/ajax_delete_guest",
            data: { guestID: guestID },
            success: function(data)
            {
                console.log(data);
            }
        });
    }
}

Это отправляется на мой контроллер:

public function ajax_delete_guest()
{
    if($this->input->post('guestID'))
    {
        $guestID = $this->input->post('guestID');
        if($this->events_model->delete_guest($guestID))
        {
            header('Content-type: application/json');
            echo json_encode(TRUE); 
        }
        else
        {
            header('Content-type: application/json');
            echo json_encode(FALSE);            
        }
    }
}

и моя модель:

public function delete_guest($guestID)
{
    $tables = array('event_guest', 'event_guest_prefs', 'event_guest_hotel');
    $this->db->where('guestID', $guestID);
    if($this->db->delete($tables))
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

При удалении гостя из БД возвращается false в console.log(). Однако я вполне уверен, что верну true, когда удаление будет успешным. У кого-нибудь есть идеи? Я ломаю голову над этим. Спасибо.

Ответы [ 2 ]

1 голос
/ 01 сентября 2011

Вы пытались добавить die ()? Однажды у меня была та же проблема, и это решило ее.

   if($this->events_model->delete_guest($guestID))
    {
        header('Content-type: application/json');
        echo json_encode(TRUE);
        die(); 
    }
    else
    {
        header('Content-type: application/json');
        echo json_encode(FALSE);            
        die();
    }
0 голосов
/ 01 сентября 2011

Это исправлено:

public function delete_guest($guestID)
{
    $tables = array('event_guest_prefs', 'event_guest_hotel');
    $this->db->where('guestID', $guestID);
    if($this->db->delete('event_guest'))
    {
        $this->db->where('guestID', $guestID)->delete($tables);
        return TRUE;
    }
    else
    {
        return FALSE;
    }

Поскольку таблицы prefs и hotel не обязательно содержат данные для $ guestID, исходная проверка вернула false.Хотя таблица _guest всегда содержит данные, поэтому я просто проверяю это сейчас и, если это удается, я продолжаю удалять другие таблицы.}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...