0

基本上发生的事情是我有一个 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,这给用户留下了空白页面。我真的很想在不重新加载页面的情况下弹出警报。我该怎么做?

4

3 回答 3

0

您可以使用 ajax 来完成此操作。但是,如果您不想使用 ajax,而是在出错时退出,您可以使用查询字符串参数重定向回表单页面。

header("Location: http://www.example.com/form.php?error=1");

如果在您的表单页面上,您可以使用 php 放置脚本。就像是

<?php if(isset($_GET['error']) && $_GET['error']==1): ?>
<script>
....
</script>
<?php endif; ?>

这将实现您正在寻找的东西。事实上,您可以执行多项检查并根据您的检查设置错误。但我仍然建议 Ajax 将提供更好的用户体验。

于 2012-05-15T23:49:43.510 回答
0

这是我在创建的某些表单中使用的脚本,用于快速验证它们。非常简单有效,希望对你有帮助。

<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>
于 2012-05-15T23:30:57.410 回答
0

编辑: 超级简单的解决方案,使用 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');
于 2012-05-16T00:36:55.413 回答