まず第一に、次の例
<form id="my-form" method="post" action="">
<label for="username">username</label>
<input type="text" name="username" id="username" value="" placeholder="username" required>
<label for"password">password</label>
<input type="password" name="password" id="password" value="" placeholder="password" required>
<button type="submit">send me</button>
</form>
に似HTML5フォームを使用します。空の入力要素を使用してフォームを送信することはできません。だからあなたはフォームを検証するためにjavascriptを扱わなければならない。ラベル要素にはfor属性があり、それは所属する入力要素のid属性に適合します。
次は、フォーム要素にJavaScriptイベントリスナーを設定することができます。
<script>
var form = document.getElementById('my-form'),
password = document.getElementById('password');
form.addEventListener('submit', function(event) {
event.preventDefault();
var data = new FormData(form);
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://your.domain.tld/check-password.php');
xhr.onload = function() {
if (xhr.status === 200) {
// if the response is json encoded
var response = JSON.parse(xhr.responseText);
if (response.message == 'valid') {
// redirect here
}
if (response.message == 'invalid') {
password.setCustomValidity('your password is not correct');
}
}
}
xhr.send(data);
});
</script>
この小さなJavaScriptコードは、フォーム要素にサブミットイベントリスナーを設定します。フォームが正常に送信されるとすぐにフォームデータ 'username'と 'password'を 'check-password.php'ファイルに送信するajaxリクエストが発生します。
以下に示すように、あなたがデータにアクセスすることができ、あなたのphpファイルで
:
<?php
$username = $_POST['username'];
$password = $_POST['password'];
?>
あなたはtはjQueryのか、それを行うための任意の他のJavaScriptフレームワークを必要とする」を着用見ることができるように。コード例は例であり、テストされていないことに注意してください。
新しいページを読み込むだけで何が問題になりますか?一般的には、匿名ユーザーからログインした状態に移行する際には非常に望ましいことです。 – Quentin
[ラベル要素の使い方を正しく理解する](http://www.456bereastreet。com/archive/200711/use_the_label_element_to_make_your_html_forms_accessible /)。その中にfor属性やフォームコントロールがなければ、ラベルは役に立たない。 – Quentin