ここに問題があります。ユーザーが入力したメールがすでに使用されているかどうかをチェックするajax関数があります。
使用するphpスクリプトは、結果に応じて「true」または「false」の文字列を送り返します。応答テキスト、または以下の関数の「data」変数を取得し、その==が「true」であるかどうかを確認すると、渡されることはなく、常にfalseと評価されます。
これは奇妙なことです。画面にデータ変数を出力すると、必要なときに「true」と表示されますが、ifステートメントでは「true」と同じように表示されないためです。ここで何が起こっているのかわかりません。
AJAX関数:
function check_email() {
var email = document.sign_up_form.email_first.value;
document.getElementById("email1").innerHTML = ' <img src="loading.gif" width="15">';
$.ajax({
type: "GET",
url: "java_check_email.php",
data: "email="+email,
success: function(data){
if(data == "true"){
document.getElementById("email1").innerHTML = ' <img src="check.png" width="15">';
document.getElementById("email4").innerHTML = '';
}
else {
document.getElementById("email1").innerHTML = ' <img src="xmark.png" width="15">';
document.getElementById("email4").innerHTML = 'Email is already in use<br>';
}
}
});
}
アップデート:
PHPスクリプトは次のようになります
<?php
include('functions.php');
$email = $_GET['email'];
$query_check = "removed for obvious reasons...";
$result_check = mysql_query($query_check);
if(mysql_num_rows($result_check) == 0){
echo 'true';
}
else{
echo 'false';
}
?>
また、ajax応答を受信したときにconsole.log(data)を呼び出した後、jsコンソールで「true」の値を取得しました。