在codeigniter中发送Ajax错误中的自定义错误消息

时间:2017-06-05 05:02:04

标签: php ajax codeigniter

我目前正在使用Codeigniter并在一个HTML表单中处理CRUD操作。 我正在使用Ajax进行创建/读取/更新。

我还使用事务管理作为数据库查询的最佳实践。

问题:

(1)我想要更新和插入错误的单独错误消息。我没有进入ajax错误部分。

(2)我使用调试器来调试这个问题,但是我没有把它弄好。

这是我的控制器的代码。

控制器

    public function save_candidate_experience() {
    $this->db->trans_start();

        if(empty($postId))){
            $query_staus = $this->test_model->insert_function( $data ); 

            if($query_staus != TRUE) {
                $msg = array('message'=>'Failed To Save! Erroe Wile Inserting.');
            } else{
                $msg = array('message'=>'Successfully Insert');
            }

        } else {
            $query_staus2 = $this->test_model->update_function( $data );    
            if($query_staus2 != TRUE) {
                $msg = array('message'=>'Failed To Save! Erroe Wile Updateing.');
            }else{
                $msg = array('message'=>'Successfully Updated');
            }
        }

       if ($this->db->trans_status() === FALSE)
         {
           $this->db->trans_rollback();
           echo json_encode ($msg);    
         }
      else
         {
           $this->db->trans_commit();
           echo json_encode ($msg);
         }
 }

这是型号代码

 public function insert_function() {

        $this->db->insert('table_name', $data);
            if($this->db->affected_rows() > 0){
                return TRUE;
            } else{
                return FALSE;
            }

 }

 public function update_function() {

        $this->db->where('id', $id);
        $this->db->update('test_table', $data);
            if($this->db->affected_rows() > 0){
                return TRUE;
            } else{
                return FALSE;
            }

 }
我认为

Ajax代码

$.ajax({         
     type: 'POST',
     async: true,
     dataType: 'Json',         
     url: save_experience,
     data: $('#candidata_exp_form').serialize(),
     success: function (response) {
        //doing something with ajax success
     },error: function (msg)
     {
       alert(msg.message);
        // I know I can give alert message here but.
        //I don't want to give alert message here.
        //I want to indicate user that the error occure whilt insert or update seperately. 
     }
});

1 个答案:

答案 0 :(得分:1)

你必须了解两件事。

表单验证错误和ajax错误不同。

Ajax错误 - 不是验证错误。 这意味着,假设您调用了一个函数,并且该函数中存在php错误,或者404错误。届时.error()将被调用。

Ajax Success - 没有错误(没有语法错误)。

所以现在你应该在ajax success()中编写逻辑。

$.ajax({         
    type: 'POST',
    async: true,
    dataType: 'Json',         
    url: save_experience,
    data: $('#candidata_exp_form').serialize(),
    success: function (response) {
        alert(response.message);// this will alert you the message which you have put in `json_encode()`
    }
});