我一直在尝试找到一种方法来做到这一点,但似乎想不出一个干净、简单的方法。当用户提交表单(比如注册表单)时,表单验证如下:
$('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
. 关于以简洁干净的方式做到这一点的任何想法?