我一直试图找到一种方法来做到这一点,但似乎无法想到干净,简单的方法。当用户提交表单(比如注册表单)时,表单验证如下:
$('form').submit(function(e) {
e.preventDefault();
var $formId = $(this).attr('id');
$.ajax({
url : "validation_check.php",
type : "POST",
data : $("#" + $formId).serialize(),
success : function(data) {
$('#' + $formId + ' :input.form_errors').removeClass('form_errors');
data = $.parseJSON(data);
if (jQuery.isEmptyObject(data)) {
document.forms[$formId].submit();
} else {
$.each(data, function(i, item) {
$('#' + $formId + ' :input#' + i).addClass('form_errors');
});
}
}
});
});
validation_check.php
只是这样做:
echo json_encode(validate($_POST));
最后,validate()
函数
$errors = array();
// need to only include if on the registration page
include_once 'register.val.php';
if (isset($data['email']) && ($data['email'] == '' || filter_var($data['email'], FILTER_VALIDATE_EMAIL) == false)) {
$errors['email'] = 'Not a valid email';
}
return $errors;
include_once 'register.val.php';
只包含一些if语句,如上面的电子邮件。我的问题是,如何确定我想要包含哪个文件?如果我正在注册,那么我只想包含register.val.php
。如果我保存信息,我只想包含edit.val.php
。有什么想法以干净利落的方式做到这一点吗?
答案 0 :(得分:1)
将$ _GET传递给名为action的脚本,其值为register或edit:
validation_check.php?action=register
然后您可以执行if(或者如果要添加更多操作,则可以切换)
if($_GET['action'] === 'register')
include_once('register.val.php');
else
include_once('edit.val.php');
如果您愿意,也可以通过邮寄方式发送行动。