2013-04-18 105 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);   
});