我正在设置一个注册表单。此表单有 7 个正在测试验证的字段。其中2个具有特殊验证;我有一个对 PHP 类的 Ajax 调用,我将 email_string 发送到这个类,测试我的数据库中是否已经存在这样的电子邮件(避免重复)。
params = {};
params['source'] = 'checkEMail';
params['email'] = email
$.ajax({
type: 'POST',
url : 'some_class.php',
data : params,
success: function(msg)
{
if(msg > 0) /* email exists */
is_error = true;
}
});
在我的 PHP 类中,我得到了这样的东西:
$final = mysql_fetch_assoc(foo);
echo ($final) ? 1 : 0;
我正在测试数据,事实上 - 如果电子邮件存在,我会得到“1”,如果不存在,我会得到“0”。
有趣的是,只要此表单中存在其他错误,此代码段就可以正常工作-例如空用户名。“is_error”是一个布尔值,在脚本开始时设置为 false,如果一次验证失败,则为 true。然后,最后,我得到了这个:
if(is_error)
{
error.show();
error.empty().append('some html foo');
}
else
{
$('form').submit();
error.empty().hide();
}
那么,尽管 is_error 设置为 true,但我怎么会发送表单呢?我能想到的唯一原因是表单在“is_error”被测试之前发送 - 但表单的发送位于脚本的最底部。
哦,我这样称呼它:
<script type="text/javascript">
$("#reg_submit").click(function(event) {
event.preventDefault();
checkReg();
});
</script>