Codeigniter ajax无法更新数据库

时间:2017-02-28 13:42:09

标签: php jquery ajax codeigniter

首先,我很抱歉我的英语不好,我会尽力解释我的问题。 所以我有问题使用ajax将数据发送到控制器然后更新模型。 如果我尝试更新数据库,Ajax无法请求。

这是我的观点(ajax):

[int[]]

这是我的控制器:

$('#set_online_restricted').on('click', function() {
        var status = "noauto";
        var change_by = "administrator";
        var date = new Date();
        var date_time = (date.getMonth()+1)+"-"+date.getFullYear()+"-"+date.getDate()+" "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds();
        var message = " ";
        var postData ={
                    'status': status,
                    'change_by' : change_by,
                    'date_time' : date_time, 
                    'message' : message
                };
        $.ajax({
           type: 'POST',
           url: '..../index.php/home/set_changed_infos',
           data: postData,
           success: function (msg){
                alert("data saved : " + msg);
                show_service_status ();
           },
           error: function() {
                alert("failed");
           }
        });

});

这是我的模特:

public function set_changed_infos(){
            $this->Manage_service_status->set_service_status();
        }

$ pliname目前是不变的。

当我点击按钮时,我得到"失败",但当我对此进行评论" $ this-> db-> update(' update_service', $数据);"请求没有失败,我的变量是纠正的。所以我不明白为什么?

提前感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

控制器

public function set_changed_infos(){

   if($this->input->server('REQUEST_METHOD') === 'POST'){

        $status = $this->input->post('status');
        $change_by = $this->input->post('change_by');
        $date_time = $this->input->post('date_time');
        $message = $this->input->post('message');

        $updateData['status'] = $status;
        $updateData['status_change_by'] = $change_by;
        $updateData['status_change_date'] = $date_time;
        $updateData['status_message'] = $message;

        $pliname = 'something'; // I've not seen where is your $pliname?
        $this->Manage_service_status->set_service_status($updateData, $pliname);
   }
}

模型

public function set_service_status($data, $pliname){
    $this->db->where('name', $pliname);
    $this->db->update('update_service', $data);
}

答案 1 :(得分:0)

您缺少where声明,因此CI不知道要更新哪条记录 例如:$this->db->where('id', $id);

您可以阅读更多here

答案 2 :(得分:0)

请替换数据ARR中的模态函数

$data= array(
                    'status' => $status,
                    'status_change_by' => $change_by,
                    'status_change_date' => $date_time,
                    'status_message' => $message
                );

答案 3 :(得分:0)

我的问题是date_time的格式,我只是用年份切换月份来尊重数据库中的dateformat(这是DATETIME),现在它可以工作了。谢谢你的帮助。

相关问题