可以通过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);
}
}
答案 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