2013-04-18 107 views
9

我對如何使用ajax .done()函數有點困惑。我正在驗證表單以檢查用戶是否存在於數據庫中,儘管Ajax是最好的方法(仍然在學習它)。我有一個PHP文件,如果用戶存在,則返回true;如果用戶不存在,則返回false。我如何將布爾值傳遞給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 
    } 
    }); 
}); 

我希望這是有道理的。我盡力解釋它。

+0

我對你所問的問題有些困惑,上述不起作用? – dt192 2013-04-18 06:36:35

+0

@DanielTillin我在jquery網站上看到了一個類似於我的例子,但我編輯它以最適合我,但我不確定他們從哪裏獲得「result」參數。 – Vince 2013-04-18 06:45:04

+1

結果是從帖子返回的數據,但返回的數據是一個字符串,因此,如果這是您的php文件輸出的結果,那麼您將匹配'true'或'false' – dt192 2013-04-18 06:53:28

回答

6

我認爲它應該be result =='true',結果是一個數據字符串

我剛查過,我說得對,報價讓它工作

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

好吧,那麼我比較了你所擁有的東西,結果發現錯誤出現在我的PHP代碼中。當我回復真實或錯誤時,我沒有用引號包圍他們,我也沒有迴應他們。我用回來代替。 – Vince 2013-04-18 07:27:41

+1

哈哈,這就是我從一開始就告訴你的:-) – dt192 2013-04-18 07:28:40

+1

沒有probs,我一直在那裏很多次自己它總是簡單的事情,很難追查,祝你好運;-) – dt192 2013-04-18 07:32:23

4

在你的php的一面,你應該回應一些json string,例如我會做這樣的validateUser.php

//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

次成功:它將返回XHR成功狀態,例如: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);   
});