2012-12-10 3 views
1

나는 해결 방법을 모른다는 약간의 문제가있다. Ajax 유효성 검사는 zend를 통해 완벽하게 작동합니다. 제출 버튼을 누르면 유효성을 검사하지만 올바른 이메일과 비밀번호를 얻으면 사용자 페이지로 이동하지 않습니다. 그것은 단지 그 형태로 남아 있습니다. Ajax를 통한 제출시 return falsetrue과 관련이 있음을 알고 있습니다.젠드 아약스 양식 제출

누군가 저를 해결하도록 도와 드릴 수 있습니까? 유효성 검사에서 오류를 감지하지 못하면 제출시 return true을 어떻게 알 수 있습니까? Ajax와 자바 스크립트

$(function() { 
    $('input').blur(function() { 
     var formElementId = $(this).get(0).id; 
     doValidation(formElementId); 
    }); 
}); 

**$(function() { 
    $('#btn_login').click(function() { 
     var email = document.getElementById('email').id; 
     var password = document.getElementById('password').id; 
     doValidation(email); 
     doValidation(password); 
     return false; 
    }); 
});** 

function doValidation(id) { 
    var url = '/users/validationform'; 
    var data = {}; 
    $('input').each(function() { 
     data[$(this).attr('name')] = $(this).val(); 
    }); 
    $.post(url,data,function(resp) { 
     $("#" + id).parent().find('.errors').remove(); 
     $("#" + id).parent().append(getErrorHtml(resp[id], id)); 
    }, 'json'); 
} 

function getErrorHtml(formErrors, id) { 
    var o = '<div id="login-error" style="color:red"><ul id="errors-'+id+'" class="errors" style="list-style-type:none;">'; 
    for(errorKey in formErrors) { 
     o += '<li>- ' + formErrors[errorKey] + '</li>'; 
    } 
    o += '</ul></div>'; 
    return o; 
} 

젠드 컨트롤러 : 여기

내 코드의

public function validationformAction() 
{ 
    $loginForm = new Application_Form_UserLogin(); 
    $loginForm->isValidPartial($_POST); 
    header('Content-type: application/json'); 
    $this->_helper->json($loginForm->getMessages()); 
} 
public function loginFormAction() 
{ 
    $this->_helper->layout()->disableLayout(); 
    //$this->_helper->viewRenderer->setNoRender(true); 

    $email = $this->getRequest()->getParam('email'); 
    $password = $this->getRequest()->getParam('password'); 

    $loginForm = new Application_Form_UserLogin(); 
    if ($this->getRequest()->isPost()) 
    { 
     /************ Login Form ************/ 
     if ($loginForm->isValid($this->getRequest()->getParams())) 
     { 
      $user = $this->_helper->model('Users')->createRow($loginForm->getValues()); 
      $user = $this->_helper->model('Users')->fetchRowByFields(array('email' => $email, 'hash' => $password)); 

      if($user) 
      { 
       Zend_Session::rememberMe(86400 * 14); 
       Zend_Auth::getInstance()->getStorage()->write($user); 
       $this->getHelper('redirector')->gotoRoute(array(), 'invite'); 
       return; 
      } 
      else { 
       // Error message 
       $this->view->errorMsg = "<b>password</b> - invalid, please try again! *"; 
      }    
     } 
     else 
     { 
      // something 
     } 
    }  
    $this->view->loginForm = $loginForm; 
} 

답변

0

는 다음과 같이 제출 방법을 시도해보십시오 .submit ($ (formselector)); 하지만 아약스 유효성 검사를 사용했기 때문에 제출할 때 실제 문제가 발생합니다. 모든 필드에 대해 구분 된 유효성 검사 함수를 작성할 수 있으며 ajax 콜백을 사용하여 제출할 수 있다고 생각합니다.

또는 jquery.validation http://bassistance.de/jquery-plugins/jquery-plugin-validation/을 사용해보십시오. 왜냐하면 아약스 서버 측 유효성 검사를 알고 있으며 유효한 경우 양식을 자동 제출하기 때문입니다.

SRY 내 영어, 나는 헝가리 :

+0

감사합니다 D, 나는 그것을 해결. – user1892860