AngularJS が登場する前は、多くの開発者がフォーム送信の問題に直面していました。フォームを送信する方法が非常に多様であれば、人々を狂わせるのは簡単でしょう...しかし、それでも人々を狂わせるのです。
今日は、PHP を使用して送信されていたフォームと、それを Angular を使用するフォームに変換する方法を見ていきます。 Angular を使用してフォームを処理することは、私にとって「なるほど」と思った瞬間でした。 Angular の表面レベルには触れていませんが、ユーザーがフォーム送信の可能性を理解し、2 つのデータ バインディング メソッドを理解するのに役立ちます。
このプロセスには jQuery プラットフォームを使用します。したがって、行うべき作業は最初に JavaScript を使用することです。フォームを送信し、エラー メッセージを表示し、エラー クラスを追加し、JavaScript で情報の表示と非表示を切り替えます。
その後、Angular を使用します。必要な作業のほとんどは使用する前に行う必要があり、以前に行った作業の多くは非常に簡単になります。始めましょう。
シンプルなフォーム
フォームを送信する 2 つの方法に焦点を当てます:
まずフォームを見てください。非常にシンプルです:
形式要件
ドキュメント構造
デモでは、2 つのファイルのみが必要です
フォーム処理
フォームを処理する新しい PHP を作成しましょう。ページは非常に小さく、データの送信に POST を使用します。
フォームの処理: これは私たちにとってそれほど重要ではありません。他の任意の言語を使用してフォームを処理できます。
// process.php <?php $errors = array(); // array to hold validation errors $data = array(); // array to pass back data // validate the variables ====================================================== if (empty($_POST['name'])) $errors['name'] = 'Name is required.'; if (empty($_POST['superheroAlias'])) $errors['superheroAlias'] = 'Superhero alias is required.'; // return a response =========================================================== // response if there are errors if ( ! empty($errors)) { // if there are items in our errors array, return those errors $data['success'] = false; $data['errors'] = $errors; } else { // if there are no errors, return a message $data['success'] = true; $data['message'] = 'Success!'; } // return all our data to an AJAX call echo json_encode($data);
AJAX 呼び出しのデータを返すには、echo と json_encode を使用する必要があります。 PHP フォーム処理で行う必要があるのはこれだけです。通常の jQuery AJAX または Angular を使用してフォームを処理する場合も同様です。
フォームの表示
フォームを表示するための HTML を作成しましょう
<!-- index.html --> <!doctype html> <html> <head> <title>Angular Forms</title> <!-- LOAD BOOTSTRAP CSS --> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.2/css/bootstrap.min.css"> <!-- LOAD JQUERY --> <!-- when building an angular app, you generally DO NOT want to use jquery --> <!-- we are breaking this rule here because jQuery's $.param will help us send data to our PHP script so that PHP can recognize it --> <!-- this is jQuery's only use. avoid it in Angular apps and if anyone has tips on how to send data to a PHP script w/o jQuery, please state it in the comments --> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <!-- PROCESS FORM WITH AJAX (OLD) --> <script> <!-- WE WILL PROCESS OUR FORM HERE --> </script> </head> <body> <div class="container"> <div class="col-md-6 col-md-offset-3"> <!-- PAGE TITLE --> <div class="page-header"> <h1><span class="glyphicon glyphicon-tower"></span> Submitting Forms with Angular</h1> </div> <!-- SHOW ERROR/SUCCESS MESSAGES --> <div id="messages"></div> <!-- FORM --> <form> <!-- NAME --> <div id="name-group" class="form-group"> <label>Name</label> <input type="text" name="name" class="form-control" placeholder="Bruce Wayne"> <span class="help-block"></span> </div> <!-- SUPERHERO NAME --> <div id="superhero-group" class="form-group"> <label>Superhero Alias</label> <input type="text" name="superheroAlias" class="form-control" placeholder="Caped Crusader"> <span class="help-block"></span> </div> <!-- SUBMIT BUTTON --> <button type="submit" class="btn btn-success btn-lg btn-block"> <span class="glyphicon glyphicon-flash"></span> Submit! </button> </form> </div> </div> </body> </html>
これでフォームが完成しました。また、Bootstrap を使用して、フォームの見栄えを軽減しました。ブートストラップ構文ルールを使用すると、各入力にはテキストのエラー メッセージを表示するスポットが含まれます。
jQuery を使用してフォームを送信します
ここで、jQuery を使用してフォームの送信を処理してみましょう。すべてのコードを空の