2011-11-20 2 views
0

ajax 로그인 스크립트를 만들려고했지만 벽에 부딪혔습니다. 나는 근래에 하나를 만들었지 만 지금은 cakephp의 framwework를 사용하고있다. 나는 이것에 관해 정말로 호중 단다라고 확신하지 않는다. 컨트롤러에 로그인 기능이있는 순간에CakePHP Ajax 로그인 시스템

public function login() 
{ 
    if($this->request->is('post')) { 
     if($this->Auth->login()) { 
      $this->Session->setFlash('Login Passed'); 
     } else { 
      $this->Session->setFlash('Login Failed'); 
     } 
    } 
} 

그렇다면 아약스를 사용하여 양식에서 값을 보내시겠습니까? 이 라인은

xmlhttp.open("POST","http://www.site.com/login/",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
xmlhttp.send("AttemptLogin=true&AccountEmail="+ userMail +"&AccountPassword=" + userPass); 

내가 어떤 방법으로 수정할 경우, 예전 (비 CakePHP를) 시스템에서입니까? 또한 errorsetc를 사용하여 모든 유효성 검사 및 로그인 시도를 처리하는 방법은 무엇입니까?

매우 개방적이고 긴 질문이지만 미안하지만 어디를 가야할지 모르겠다. 튜토리얼을 찾았지만 찾을 수 없다.

많은 감사 크리스

당신은 케이크에서 자바 스크립트 도우미를 사용하여 컨트롤러에서 JSON 형식으로 응답을 변환하여 하나의 템플릿을 가질 수

답변

1

그냥 도우미 같습니다

var $helpers = array('Javascript'); 
var $components = array('RequestHandler'); 

//the template ie "/views/templates/ajax.ctp" 
echo $javascript->object(isset($response) ? $response : array()); 

을 따라서 요 당신과 같은 기능을 설정할 수 있습니다 :

public function login() 
{ 
    if($this->RequestHandler->isPost()) { 
    if($this->Auth->login()) { 
     $response('success'=>true); 
    } else { 
     $response('success'=>false); 
    } 
    $this->set('response', $response); 
    $this->render(null, 'ajax'); 
} 

그리고 자바 스크립트 i는 jQuery

$.ajax({url:"/controller/login",type:"POST", data:$('#formLogin').serialize(), dataType:"json", success:responseLogin, context:this}); 

function responseLogin(response) 
{ 
    //here is the object returned by cakephp 
    if(!response.success) 
     //do something the user don't login 
    else 
     //do something the user pass the login 
} 
+0

답장을 보내 주셔서 감사합니다.이 코드는 cake 2.0에 해당합니까? – Chris

+0

아니요는 1.3이지만 몇 가지 사항을 변경하면 2에서 작동 할 수 있습니다. –