0

ここに問題があります。ユーザーが入力したメールがすでに使用されているかどうかをチェックする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」の値を取得しました。

4

2 に答える 2

1

デバッグについては、

if (data.replace(/\s+/g, '') == "true") {

<?php ?>...私のお金はタグの外側の空白にあります。これで問題が解決した場合、解決策と見なすべきではないことに注意してください。実際の解決策は、PHPスクリプトから追加の空白を削除することです。

<開始タグの<?phpは、ファイルの最初の文字である必要があります。例えば:

          この空の行は直接出力されます
    <?php
^^^^この空白は直接出力されます

また、終了?>タグは不要な場合が多く(この場合のように)、完全に省略すると、このような問題を回避するのに役立ちます。

ブール値をJSに返したい場合は、単にエコー1または0を実行する必要があります。これにより、受信側のJavascriptでこれを実行できます。

if (data) {
于 2012-10-08T17:04:38.393 に答える
0

私はこれが古いことを知っていますが、まったく同じ問題があり、修正できませんでした。空白の問題ではなかったと確信していますが、別の方法で解決することができました。おそらくそれは最善の方法ではありませんが(なぜそれが通常の方法で機能しないのかを知りたいのですが)、私がしたことは0(falseの場合)と1(trueの場合)をエコーすることでした

次に、データを整数に解析したので、コードは次のようになります。

function(data){
        var result = parseInt(data);
        if (result === 1){
             $('#loginresult').html('OK');
        } else {
            $('#loginresult').html('NOT OK');
        }

私はこの回避策で誰でも助けることができることを願っています(しかし、良い解決策がより良いでしょう)

于 2014-09-30T10:05:10.027 に答える