簡體   English   中英

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,使用戶留有空白頁面。 我真的很想在不重新加載頁面的情況下彈出警報。 我該怎么做?

這是我以某種形式創建的腳本,用於快速驗證它們。 它非常簡單有效,希望對您有所幫助。

<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>

您可以使用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將提供更好的用戶體驗。

編輯:超級簡單的解決方案,使用jQuery窗體插件: http : //jquery.malsup.com/form/

我在某些Web應用程序中做了類似的操作,您可能會發現它很有用。

我在驗證服務器端進行操作,如果遇到錯誤,請執行以下操作:

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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM