0

我一直在尝试找到一种方法来做到这一点,但似乎想不出一个干净、简单的方法。当用户提交表单(比如注册表单)时,表单验证如下:

   $('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. 关于以简洁干净的方式做到这一点的任何想法?

4

1 回答 1

1

将 $_GET 传递给名为 action 的脚本,其值为 register 或 edit:

validation_check.php?action=register

然后你可以做一个 if (如果你想添加更多动作,也可以做一个 switch)

if($_GET['action'] === 'register')
    include_once('register.val.php');
else
    include_once('edit.val.php');

如果您愿意,也可以通过邮件发送操作。

于 2013-04-11T14:45:02.180 回答