2012-11-22 213 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

相關問題