私は AJAX を使用してユーザー登録フォームを作成しようとしていますが、これにはかなり慣れていないため、自分が行っていることの経験があまりありません。私の問題は、php が機能しないか、AJAX がファイルを送信しないことです。responseText が戻ってきたときに値がありません。responseText が PHP のエコーになるようにします。私はおそらく何をすべきかの正しい線に沿っていると思いますか? 助けてください。また、質問のレイアウトが悪くて申し訳ありません。すぐに整理します。
HTML:
<div id="registration">
<form method="post" action="" onsubmit="formValidate()">
<!-- Apply Javascript for form validation and change password property -->
<div id="title">First Name:</div>
<input type="text" name="firstname" id="firstname" value="First Name"/>
<div id="title">Surname:</div>
<input type="text" name="surname" id="surname" value="Surname"/>
<div id="title">Address:</div>
<input type="text" name="address" id="address" value="Address Line 1"/>
<input type="text" id="town_city" name="town_city" value="Town/City"/>
<input type="text" name="postcode" id="postcode" value="Postcode" />
<input type="text" name="country" id="country" value="Country" />
<div id="title">Email:</div>
<input type="text" name="email" id="email" value="Email" />
<div id="title">Password:</div>
<input type="text" name="password" id="password" value="Password" />
<div id="title">Verify Password:</div>
<input type="text" name="vPassword" id="vPassword" value="Passwloord" />
<div id="status"></div>
<input type="submit" name="submit" value="Register" />
</form>
</div>
JS:
function formValidate() {
if (window.XMLHttpRequest) {
xml = new XMLHttpRequest();
} else {
xml = new ActiveXObject('Microsoft.XMLHTTP');
}
var url = 'php/validateUser.inc.php';
var fn = document.getElementById('firstname').value;
var ln = document.getElementById('surname').value;
var add = document.getElementById('address').value;
var tc = document.getElementById('town_city').value;
var pCode = document.getElementById('postcode').value;
var country = document.getElementById('country').value;
var email = document.getElementById('email').value;
var pass = document.getElementById('password').value;
var vPass = document.getElementById('vPassword').value;
var userInput = "firstname=" + fn + "&surname=" + ln + "&address=" + add + "&town_city=" + tc + "&postcode=" + pCode + "&country" + country + "&email=" + email + "&password=" + pass + "&vPassword=" + vPass;
xml.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xml.open('POST', url, true);
xml.onreadystatechange = function() {
if (xml.readyState == 4) {
if (xml.status == 200) {
var return_data = xml.responseText;
document.getElementById("status").innerHTML = return_data;
} else {
alert("GNAH!");
}
}
xml.send(userInput);
document.getElementById("status").innerHTML = "Processing....";
}
この部分を完了した後、PHP のエコーをステータス div に表示したいのですが、画面の左隅に表示されますが、「処理中....」は表示されません。何か提案があれば、これが間違っているファイルであることを知っています。
PHP:
<?php
if (isset($_POST['submit'])) {
if (isset($_POST['firstname'], $_POST['surname'], $_POST['address'], $_POST['town_city'], $_POST['postcode'], $_POST['country'], $_POST['email'], $_POST['password'], $_POST['vPassword'])) {
$fName = mysql_real_escape_string($_POST['firstname']);
$lName = mysql_real_escape_string($_POST['surname']);
$addr = mysql_real_escape_string($_POST['address']);
$town_city = mysql_real_escape_string($_POST['town_city']);
$pCode = mysql_real_escape_string($_POST['postcode']);
$country = mysql_real_escape_string($_POST['country']);
$email = mysql_real_escape_string($_POST['email']);
$pass = mysql_real_escape_string($_POST['password']);
$pass_hash = md5($pass);
$vPass = mysql_real_escape_string($_POST['vPassword']);
if (!empty($fName) && !empty($lName) && !empty($addr) && !empty($town_city) && !empty($pCode) && !empty($country) && !empty($email) && !empty($pass) && !empty($vPass) && $pass == $vPass) {
$query = "INSERT INTO `usertable` (user_id, fName, lName, Address, town_city, pCode, Country, Email, Password) VALUES ('', '$fName', '$lName', '$addr', '$town_city', '$pCode', '$country', '$email', '$pass')";
$query_run = mysql_query($query);
if ($query_run) {
header('Location: login.php');
} else {
echo mysql_error();
}
} else {
echo 'Please fill in all fiels and make sure both passwords match.';
}
} else {
echo mysql_error();
}
}
?>