gpt4 book ai didi

php - Zend Ajax 提交表单

转载 作者:行者123 更新时间:2023-11-28 09:30:23 28 4
gpt4 key购买 nike

我有一个小问题,不知道如何解决。 Ajax 验证通过 zend 可以完美工作。按提交按钮确实可以验证,但是当我获得正确的电子邮件和密码时,它不会转到用户页面。它只是保留在该表格上。我知道这与通过 Ajax 提交时的 return falsetrue 有关。

有人可以帮我解决这个问题吗?如果验证没有检测到错误,我不知道如何在提交时返回 true

这是我的代码:Ajax 和 JavaScript

$(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;
}

Zend Controller :

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;
}

最佳答案

尝试提交方法,如下所示:$(formselector).submit();但因为你使用了ajax验证,真正的问题是当你提交时。我认为你可以为all字段编写单独的验证函数,并且可以使用ajax回调来提交。

或者尝试 jquery.validation http://bassistance.de/jquery-plugins/jquery-plugin-validation/因为它知道ajax服务器端验证,并在有效时自动提交表单。

对不起,我的英语,我来自匈牙利:D

关于php - Zend Ajax 提交表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13809222/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com