2012-11-22 168 views
0

我正在使用codeigniter,我写了一个函数来检查它是否存在用户密码。这是我的模型ajax返回true,而FALSE

  1. 的模式:用户

    公共职能get_some_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; 
        } 
    
  2. 控制器

    公共职能check_password(){
    $ username = $ this-> uri-> segment(3); $ temp_pass = $ this-> input-> post('current_password'); $ password = md5($ temp_pass); $ this-> user-> get_some_password($ username,$ password);

    } 
    
    1. 视图上的AJAX

    //在页面加载完成

    VAR success1 = $( “成功”); //成功时出现的视图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'); 
          } 
    
         }); 
    

问题:阿贾克斯加载成功DIV即使返回的用户名或密码是假的,我在哪里失去了一些东西

回答

2

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

1)您可以解析成功方法返回的值。

例如

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

和我在哪里可以设置标题状态? – Alphy

+0

@ Alphy没有与codeignater一起工作,但看起来像可以帮助你http://codeigniter.com/user_guide/libraries/output.html。 '$ this-> output-> set_status_header()'part –

+0

我已经试过了你的代码,现在它只是返回假,即使真的,我也设置了标题 – Alphy

相关问题