2014-07-14 209 views
1

我想用session(使用PHP + ajax)创建登录表单,我使用json从控制器发送用户名,但它不起作用。我不知道什么是错,请帮忙
这是控制器的功能:php ajax登录表格

public function actionLogin() 
    { 
     $username = isset($_POST['username'])?$_POST['username']:null; 
     $password = isset($_POST['password'])?sha1($_POST['password']):null; 

     $json = new JsonHelper(); 
     $result = array(); 

      if($username && $password !=''){ 
       $checkLogin = Administrator::model()->findByAttributes(
          array('username'=>$username, 'password'=>$password)); 
       $checkUser = Administrator::model()->findByAttributes(
          array('username'=>$username));   
       $checkPass = Administrator::model()->findByAttributes(
          array('password'=>$password)); 

       $login = count($checkLogin); 
       $user = count($checkUser); 
       $pass= count($checkPass); 

       if($login==1) 
       { 
        $result['status'] = 'success'; 
        $result['username'] = $username; 
        $json->addData('ajax', $result); 
       } 
       elseif($user == 1 && $pass == 0) 
       { 
        $result['status'] = 'wrongPass'; 
        $json->addData('ajax', $result); 
       } 
       elseif($user == 0 && $pass == 1) 
       { 
        $result['status'] = 'wrongUser'; 
        $json->addData('ajax', $result); 
       } 
      } 

     echo json_encode($json->getJson()); 
    }  

,这是form_login.js文件:

function login(){ 
    var form = $('#login-form'); 
    var formId = form.attr('id'); 
    var action = form.attr('data-action'); 
    var method = form.attr('data-method'); 
    var formData = serializer(form); //don't mind this function 
    $.ajax(
    { 
     url: action, 
     cache: false, 
     processData: false, 
     contentType: false, 
     type: method, 
     data: formData, 
     success: function(json) 
     { 
      // AJAX SUCCESS 
      var json = JSON.parse(result); 
      if(json['result']['ajax']['status']=='success') 
      { 
       //$_SESSION['username'] =json['username']; 
       window.location = baseUrl + "/appsterize/dashboard/index"; 
      } 
      else if(json['result']['ajax']['status']=='wrongPass') 
      { 
       // Password wrong 
       alert("The password you entered is incorrect."); 
      } 
      else if(json['result']['ajax']['status']=='wrongUser') 
      { 
       // Username isn't exist 
       alert("Username isn't exist"); 
      } 
     }, 
     error: function(xhr, status, error) 
     { 
      // AJAX ERROR 
      var string = "<strong>Error!</strong> " + xhr['responseText']; 
      $(alertError).attr('data-text', string); 
      $(alertError).click(); 
     }, 
    }); 
} 

一些错误是“未捕获的ReferenceError:alertError没有定义'

+1

? – serakfalcon

+0

我应该把alertError放在哪里? – Ken

+0

您需要定义它,将其设置为一个值,您想在哪里输出错误? – serakfalcon

回答

0

有一个id ='alertError'的元素? 难道这是解决方案:

$("#alertError").attr('data-text', string); 
... 
+0

好的,谢谢garcez – Ken

0

基本上,上面说什么@serakfalcon:

... 
    error: function(xhr, status, error) 
      { 
       // AJAX ERROR 
       var errorMsg = "<strong>Error!</strong> " + xhr['responseText']; 
       alert(errorMsg); 
      }, 
... 
你永远不会明白`alertError`,你有什么期望发生
+0

我会尽力,谢谢yycroman – Ken