当我期望为真时,AJAX调用返回false

时间:2011-09-01 09:02:11

标签: javascript jquery ajax codeigniter

我正在代码点火器应用程序中进行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 个答案:

答案 0 :(得分:1)

您是否尝试过添加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();
    }

答案 1 :(得分:0)

这解决了它:

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;
    }

因为prefshotel表不一定包含$ guestID的数据,所以原始检查返回false。 _guest表总是包含数据,所以我现在只检查它,如果成功,我继续删除其他表。     }

相关问题