2013-04-18 2 views
9

ajax .done()関数の使い方はちょっと混乱しています。私は、ユーザーがデータベースに存在するかどうかをチェックするためのフォームの検証に取り組んでいます.AJAXは(まだそれを学んでいる)最良のアプローチです。私は、ユーザーが存在する場合はtrueを返し、ユーザーが存在しない場合はfalseを返すPHPファイルを持っています。 booleanをdone関数のパラメータにどのように渡しますか?jquery .ajax .done()関数に混乱しました

$(".check").blur(function(){ 
    var username = $(".check").val(); 
    $.ajax({ 
    url: "validateUser.php", 
    type: "post", 
    data: "username= " + username 
    }).done(function(result){ 
    if (result == true){ 
     // User exists 
    }else{ 
     // User doesn't exist 
    } 
    }); 
}); 

わかりました。私はそれを説明するために全力を尽くした。あなたのPHP側で

+0

下回ってみ完了し、戻りデータを返します。これは、XHRの成功状態、例えばを返します。私はあなたが求めていることについて少し混乱しています、上記はうまくいかないのですか? – dt192

+0

@DanielTillin私はjqueryのウェブサイトの例を似ていましたが、私はそれに合わせて編集しましたが、どこから結果パラメータを取得するのかはわかりません。 – Vince

+1

結果は、投稿から返されたデータですが、返されるデータは文字列なので、あなたのPHPファイルに出力されている場合は 'true'または 'false'にマッチします。 – dt192

答えて

6

を私はそれが必要だと思います結果はデー​​タ文字列で結果は== '真'です

私はちょうど私がチェックした、私は正しい、引用符はそれを動作させる

PHP:

<?php 

if($_POST['username']=='sambob'){echo 'true';}else{echo 'false';} 

?> 

Javascriptを

username='sambob'; 

$(".check").blur(function(){ 
    $.post("validateUser.php", { username: username }) 
    .done(function(data) { 
    if (data == 'true'){ 
     alert("User exists"); 
    }else{ 
     alert("User doesn't exist"); 
    } 
    }); 
}); 

JSON PHP

<?php 

if($_POST['username']=='sambob'){echo'{"exists":true}';} 
          else{echo'{"exists":false}';} 
?> 

JSONはJavaScript

$(".check").blur(function(){ 
    $.post("validateUser.php", { username : username }, 
    function(user){ 
     if (user.exists == true){ 
     alert("User exists"); 
     }else{ 
     alert("User doesn't exist"); 
     } 
    }, "json"); 
}); 
+0

私のために働いて、同じことのJSONバージョンを追加[OK]あなたが持っているものと私が持っているものを比較したところ、私のPHPコードにエラーが出ていました。私が本当か偽に戻ったとき、私はそれらを引用符で囲んでいませんでした、そして、私はそれらをエコーし​​ませんでした。私は代わりにリターンを使用しました。 – Vince

+1

笑それは私が最初からあなたに言っていたものです:-) – dt192

+1

probsはありません、私は何度もそこに行ってきましたそれは常に追跡するのは難しい簡単なことです、幸運;-) – dt192

4

、あなたはたとえば、私がvalidateUser.phpに、このようにやるいくつかjson string、エコー必要があります。

//Check your database etc. 
$user_exists = array('error'=>false,'user'=>true); 
echo json_encode($user_exists); 

とjQueryとより:

$.ajax({ 
    url: "validateUser.php", 
    type: "post", 
    data: "username= " + username, 
    dataType: "json", 
    }).done(function(result){ 
    if (result.error == false){ 
     //No errors, check user 
     if(result.user == true) 
      alert("Exists"); //now do some stuff 
     else 
      alert("User don't exists"); 
    }else{ 
     // There is an error 
    } 
    }); 
0

の成功:200
完了:XHR成功を得れば、それは

コード

$.ajax({ 
type: "POST", 
url: Url, 
data: dataParameter, 
async: true, 
success: function(results, textStatus) { 
    debugger; 
    console.log("success : " + results); 
}, 
error: function(xhr, status, error) 
{ 
    console.log("error : " + xhr.responseText);     
} 
}).done(function(results) { 
    debugger;   
    console.log("done : " + results);   
}); 
関連する問題