控制器不返回变量

时间:2014-08-08 15:53:51

标签: php jquery ajax json codeigniter

可以通过ajax成功提交表单,并且可以在jquery窗口中显示通知消息(“您的名称已成功更改!”)但是当我提交空表单时,它不会返回消息“fail”。你能检查我的代码并帮我找出错误。

控制器:

$this->load->library('form_validation');
$this->load->model('my_model');   

$this->form_validation->set_rules('name','Name','required|trim|alpha|min_length[3]|xss_clean');

if($this->form_validation->run()) {
    $user_id = $this->session->userdata('user_id');
    $name = $this->input->post('name');
    if ($this->model_users->did_change_name($user_id, $name)) {
        $data = array(
            'message_ok' => "Your name has been successfully changed!"
        );
        echo json_encode($data);
    } else { 
        $data = array(
            'message' => 'fail'                   
        );
        echo json_encode($data);         
    }
}

3 个答案:

答案 0 :(得分:1)

我还没有在很长一段时间内使用CI,但根据我的理解,您需要检查表单是否有效以运行一系列事件,例如更改名称。但是当表单验证返回false时,如果您的某个验证规则失败了,那么它就会失败。

if($this->form_validation->run()) {

    // your code

} else {

    $data = array(
        'message' => 'fail'                   
    );
    echo json_encode($data); 

}

答案 1 :(得分:1)

所有关于括号的方法:)尝试这种方式:

if($this->form_validation->run()) {
    $user_id = $this->session->userdata('user_id');
    $name = $this->input->post('name');
    if ($this->model_users->did_change_name($user_id, $name)) {
        $data = array(
            'message_ok' => "Your name has been successfully changed!"
        );
        echo json_encode($data);
    } 
}
else { 
        $data = array(
            'message' => 'fail'                   
        );
        echo json_encode($data);         
    }

答案 2 :(得分:0)

if($this->form_validation->run()==TRUE) {

现在你的代码总是会返回第一个参数,因为你实际上并没有检查验证的结果。它目前相当于说if(1)

https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html