나는 해결 방법을 모른다는 약간의 문제가있다. Ajax 유효성 검사는 zend를 통해 완벽하게 작동합니다. 제출 버튼을 누르면 유효성을 검사하지만 올바른 이메일과 비밀번호를 얻으면 사용자 페이지로 이동하지 않습니다. 그것은 단지 그 형태로 남아 있습니다. Ajax를 통한 제출시 return false
및 true
과 관련이 있음을 알고 있습니다.젠드 아약스 양식 제출
누군가 저를 해결하도록 도와 드릴 수 있습니까? 유효성 검사에서 오류를 감지하지 못하면 제출시 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;
}
감사합니다 D, 나는 그것을 해결. – user1892860