首页 文章

ajax返回true而FALSE

提问于
浏览
0

我正在使用codeigniter,我已经编写了一个函数来检查是否存在用户密码 . 这是我的模特

  • 型号:用户

public function 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($用户名,密码$);

}
  • 视图上的ajax

//在页面加载时完成

var success1 = $(“ . success”); //如果成功var error1 = $(“ . error”),则显示视图上的div; //如果出错,则显示视图上的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,我在哪里错过了什么

1 回答

  • 2

    这是一个正确的行为,因为当响应代码不是200时执行jquery错误:

    1)您可以在success方法中解析返回值 .

    例如

    success: function(data) {
        if (data == 'true') {
            // Success
        } else {
            // Error
        }
    }
    

    2)您可以从服务器404,500,503返回错误代码...触发执行错误功能 .

    例如

    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;
        }
        ...
    }
    

相关问题