ユーザー名が既に使用されているかどうかを確認する小さな jQuery/AJAX スクリプトがあります。PHP スクリプトにクエリを実行し、指定されたユーザー名を持つユーザーの数を出力します。フォームの検証エラーの数を追跡するエラー カウンターがあり、ユーザー名が既に使用されている場合はカウンターをインクリメントします。
//Keep track of number of errors
var errors = 0;
//Keep track of error messages
var errorMsg = "";
//Check if the passwords match (this part works as expected)
if($("#password").val() != $("#repeat").val()) {
errors++;
errorMsg += "<li>Passwords do not match!</li>";
}
//Now check if the user exists
var userName = $("#user").val();
$.ajax({
type: "POST",
data : {'user': userName},
cache: false,
url: "js/ajax/addUser.php?action=checkuser",
success: function(data){
var result = parseInt(data);
//For debugging purposes
alert("Before checking the data, # of errors is: " + errors);
if(result > 0) {
errors++;
errorMsg += "<li>A user with the name <strong>" + userName + "</strong> already exists!</li>";
}
//For debugging purposes
alert("After checking the data, # of errors is: " + errors);
}
});
//For debugging purposes
alert("Before validating the form, # of errors is: " + errors);
if(errors > 0) {
//Output error message
}
else {
//Send the form
}
コメントで述べたように、alert()
デバッグ用の がいくつかあります。最初の 2 つ (AJAX 要求内) は、正しい量のエラーを表示します。ただし、3 番目のエラーに到達すると、AJAX リクエスト内で発生したエラーは完全に無視されます。
コードを要点だけに切り詰めましたが、提供されたスニペット内でエラーが明確でない場合は、全体を投稿できます。