我正在使用codeigniter,我已经编写了一个函数来检查它是否存在用户密码。这是我的模特
模特:用户
公共函数get_some_password($ username,$ password){
$this->db->where('user_password', $password);
$this->db->where('user_username',$username);
$query=$this->db->get('some_users_table');
if($query->num_rows()==1){
return true;
}else{
return false;
}
控制器
public function check_password(){
$ USERNAME = $这 - > URI->链段(3);
$ temp_pass = $ this-> input-> post('current_password');
$密码= MD5($ temp_pass);
$这 - >用户> get_some_password($用户名,密码$);
}
//在页面加载时完成
var success1 = $(“。success”); //如果成功则显示视图上的div var error1 = $(“。error”); //如果出现错误,则显示视图上的div success1.hide(); error1.hide();
$('#change_password').click(function() {
var username = $('#username').val();
dataString2 = $('#changpassword').serialize();
$.ajax({
type: "POST",
url: '<?php echo base_url(); ?>controller_name/check_password/' + username,
data: dataString2,
success: function() {
$('.success').html('password successfully updated!'),
success1.slideDown('slow');
},
error: function() {
$('.error').html('Wrong current password!'),
error1.slideDown('slow');
}
});
问题:即使返回的用户名或密码为false,Ajax也会加载成功div,我错过了什么
答案 0 :(得分:2)
这是一个正确的行为,因为当响应代码不是200时执行jquery错误:
1)您可以在success方法中解析返回的值。
e.g。
success: function(data) {
if (data == 'true') {
// Success
} else {
// Error
}
}
2)您可以从服务器404,500,503返回错误代码...触发执行错误功能。
e.g。
header("Status: 404 Not Found");
注意:标头应在任何输出完成之前执行。
试试你的控制器:
public function check_password() {
$username=$this->uri->segment(3);
$temp_pass= $this->input->post('current_password');
$password=md5($temp_pass);
if(!$this->user->get_some_password($username,$password)) {
$this->output->set_status_header('500');
return;
}
...
}