2017-03-07 5 views
0

console.logに応答を送信すると、私のajax応答が異なる理由が見つかりません。何か案は?page1はアカウント更新フォームで使用され、page2は登録フォームで使用されます。どのようにAjaxレスポンスが異なるのですか?

page1.js:

function ajaxCheckDupEmail(){ 
    if(valid_email === true){ 
     return $.ajax({ 
      type:'POST', 
      url:'ajax/page1.php', 
      data:{ 'email': email, 'email_login': email_login }, 
      success:function(response){ 
       //some code 
      } 
     }); 
    }else{ 
     //other code 
    } 
} 

$.when(ajaxCheckDupEmail()).done(function(a1){ 
    console.log(a1); 
    if(a1[0] === 'false'){ 
     //submitting form 
     //some code 
    } 
}); 

注:電子メールとemail_loginは、私は、電子メールが有効であるかどうかを確認するためにVALID_EMAILを使用し、私はユーザ入力保存のjs VARある

page1.php:

if(isset($_POST["email"]) && !empty($_POST["email"])){ 
$email = trim_strip_data($_POST["email"]); 
$email_login = trim_strip_data($_POST["email_login"]); 

$prep_data_email = $db->prepare("SELECT email FROM user WHERE email = :email"); 
$prep_data_email->execute(array(":email" => $email)); 
$row_count = $prep_data_email->rowCount(); 
if($row_count === 1 && $email !== $email_login){ 
    echo "true"; 
}else{ 
    echo "false"; 
} 
} 

注:trim_strip_data()は、この場合には必要ではないと思われますが、空白をトリミングするカスタム関数です

page2.js:

function ajaxCheckDupEmail(){ 
    if(valid_email === true){ 
     return $.ajax({ 
      type:'POST', 
      url:'ajax/page2.php', 
      data:{ 'email': email }, 
      success:function(response){ 
       // some code 
      } 
     }); 
    }else{ 
     //other code 
    } 
} 

function ajaxCheckDupUsername(){ 
    if(username !== ""){ 
     return $.ajax({ 
      type:'POST', 
      url:'ajax/page2.php', 
      data:{ 'username': username }, 
      success:function(response){ 
       // some code 
      } 
     }); 
    }else{ 
     //other code 
    } 
} 

$.when(ajaxCheckDupUsername(), ajaxCheckDupEmail()).done(function(a1, a2){ 
    console.log(a1); 
    console.log(a2); 
    if(a1[0] === 'false' && a2[0] === 'false'){ 
     //submitting form 
     //some code 
    } 
}); 

注:電子メールは、私は、私はメールが有効であるかどうかを確認するためにVALID_EMAILを使用してユーザ入力保存のjs VARある

page2.php:

if(isset($_POST["email"]) && !empty($_POST["email"])){ 
$email = trim_strip_data($_POST["email"]); 

$prep_data_email = $db->prepare("SELECT email FROM user WHERE email = :email"); 
$prep_data_email->execute(array(":email" => $email)); 
$row_count = $prep_data_email->rowCount(); 
if($row_count === 1){ 
    echo "true"; 
}else{ 
    echo "false"; 
} 
} 

if(isset($_POST["username"]) && !empty($_POST["username"])){ 
$username = trim_strip_data($_POST["username"]); 

$prep_data_username = $db->prepare("SELECT username FROM users WHERE username = :username"); 
$prep_data_username->execute(array(":username" => $username)); 
$row_count = $prep_data_username->rowCount(); 
if($row_count === 1){ 
    echo "true"; 
}else{ 
    echo "false"; 
} 
} 

注:trim_strip_data()は、この場合には必要ではないと思うが、空白をトリミングするカスタム関数です

問題は2つの異なる応答を返します(結果に応じてtrue/false)を返します。 page2.jsで

true 

は私が手::page1.jsで

私が取得私はpage2.jsでレスポンスオブジェクトを取得するよう

true,success,[object Object] 

true,success,[object Object] 

に見えますが、私はなぜありませんpage1.jsで1つを取得しますか?

答えて

0

https://api.jquery.com/jquery.when/#jQuery-when-deferreds

あなたは約束を扱っている、との約束は必ず約束を返します。 したがって、私はpage1がオブジェクトも返さないことを再度確認します。

など。 devのツールを開き、以下を実行してください。

$.when().done(function(x) { alert('done')}); 

これはオブジェクトを返しますが、これは約束です。

しかしsuccessがどこから来ている

true,success,[object Object] 

のために、私はあなたには、いくつかのコードが欠けている、表示されないのですか?

サイドノートで...

if(valid_email === true) 

if(valid_email) 

と同じで申し訳ありませんが、それだけで私を悩ませました。

+0

私は2つの反応を警告しましたが、私の質問で述べたのと同じ結果が得られます。私はコードを紛失していません。 – Thoaren

関連する問題