包含特定文件的理想方式


Ideal way to include specific files

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

   $('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。有什么干净利落的方法吗?

将一个$_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');

你也可以通过post发送动作,如果你愿意的话。