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

編集: 超簡単な解決策、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 is 関数は次のとおりです。

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 に答える
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

これを実現するために 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 の方が優れたユーザー エクスペリエンスを提供することをお勧めします。

于 2012-05-15T23:49:43.510 に答える