PHP 表单验证警报,无需重定向页面
PHP form validation alerts without redirecting page
基本上发生的事情是我有一个php表单来发送电子邮件。在此过程中有几个不同的验证步骤,这些步骤都很好用。我想做的是在提交表单时出现验证错误时弹出 javascript 警报。我可以使用以下 php:
// Validate email
if(!filter_var($EmailFrom, FILTER_VALIDATE_EMAIL))
{
echo "<script language=javascript>alert('Please Use a Valid Email Address')</script>";
exit;
}
弹出警报,但页面重定向到 domain.com/sendemail.php,这会给用户留下空白页面。我真的很想在不重新加载页面的情况下弹出警报。我该怎么做?
您可以使用 ajax 来实现此目的。但是,如果您不想使用 ajax,而是在出错时退出,则可以将表单页面与查询字符串参数一起重定向回表单页面。
header("Location: http://www.example.com/form.php?error=1");
在您的表单页面上,您可以将脚本放在 php if 中。类似的东西
<?php if(isset($_GET['error']) && $_GET['error']==1): ?>
<script>
....
</script>
<?php endif; ?>
这将实现您正在寻找的。实际上,您可以执行多项检查并根据检查设置错误。但我仍然建议Ajax将提供更好的用户体验。
编辑:超级简单的解决方案,使用jQuery表单插件:http://jquery.malsup.com/form/
我在我的一些网络应用程序中做了类似的事情,你可能会发现它很有用。
我做我的验证服务器端,如果我遇到错误,我会这样做:
json_die(array(
'status' => 'error',
'message'=> 'Your error message'
));
为了成功:
json_die(array(
'status' => 'success',
'message'=> 'Your success message'
));
json_die是函数是:
function json_die($array) {
header("content-type: application/json");
die(json_encode($array, true));
}
然后在前端,我做了这样的事情:
$.post('/your_url', {
'your': vars
}, function (r) {
if(r.status == 'success') {
alert(r.message);
} else if (r.status == 'error') {
alert(r.message);
//handle error
} else {
alert('server exploded / no connection');
}
},'json');
这是我在创建的某些表单中使用的脚本,用于快速验证它们。它非常简单有效,希望对您有所帮助。
<script type="text/javascript">
function validate(){
emailfilter = /^([a-zA-Z0-9_'.'-])+'@(([a-zA-Z0-9'-])+'.)+([a-zA-Z0-9]{2,4})+$/;
condition = 1;
mensaje = "Complete: ";
//Validate 1st input (Check if empty)
if (document.formname.forminput1.value.length==0){
condition = 0;
msg = msg + "-Input 1 is empty "
}
//Validate 1nd input (Check email)
if (!emailfilter.test(document.formname.forminput1.value)) {
condition = 0;
msg = msg + "-Input 1 has a invalid email adresss "
}
if (condition == 0){
alert(msg)
document.formname.forminput1.focus()
return 0;
}
//send
alert("Form sended.");
document.formname.submit();
}
</script>
相关文章:
- 如何根据所选选项值重定向表单操作
- 根据答案重定向表单
- Rails jQuery.提交后如何重置表单
- 如何使用单击此处提交重定向表单
- Safari在重定向/表单提交时暂停所有动画
- 防止在没有ajax的情况下提交后重定向表单
- 具有输入类型文件字段的语义UI重置表单
- AngularJS-重置表单
- 重置表单后未删除验证消息
- jQuery,在toggle()中重置表单值
- 使用对话框中的jQuery验证重置表单
- 重定向表单失败
- 提交后重定向表单
- 在提交时使用JavaScript重定向表单插件
- JavaScript重定向表单提交
- 我需要提交表单,并在一个花哨的框中重定向表单提交的父页面
- 如何使用jquery提交和重定向表单?
- 使用下拉字段中的值重定向表单提交上的页面
- 重定向表单用户提交时,基于无线电选择仅
- 我试图在表单提交到一个新页面后,根据用户选择的多个选项(Javascript.html)重定向表单