2013-04-18 29 views
9

Tôi hơi bối rối về cách sử dụng hàm ajax .done(). Tôi đang làm việc trên xác nhận một hình thức để kiểm tra xem một người dùng tồn tại trong cơ sở dữ liệu và mặc dù ajax sẽ là cách tiếp cận tốt nhất (vẫn còn học nó). Tôi có một tập tin php trả về true nếu người dùng tồn tại và sai nếu người dùng không tồn tại. Làm thế nào tôi sẽ vượt qua boolean vào tham số cho các chức năng thực hiện?Bối rối trên hàm 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 
    } 
    }); 
}); 

Tôi hy vọng điều đó có ý nghĩa. Tôi đã cố hết sức để giải thích.

+0

Tôi hơi bối rối về những gì bạn đang yêu cầu, điều trên không hoạt động? – dt192

+0

@DanielTillin Tôi thấy một ví dụ trên trang web jquery tương tự như của tôi, nhưng tôi đã chỉnh sửa nó cho phù hợp với tôi nhất, nhưng tôi không chắc chắn nơi họ nhận được thông số 'kết quả' từ. – Vince

+1

kết quả là dữ liệu được trả về từ bài đăng, nhưng dữ liệu trả về là chuỗi, vì vậy, bạn sẽ khớp với 'true' hoặc 'false' được trích dẫn nếu đó là kết quả của tệp php của bạn – dt192

Trả lời

6

Tôi nghĩ rằng nó nên là kết quả == 'true' vì kết quả là chuỗi dữ liệu

Tôi vừa kiểm tra, tôi chính xác, dấu ngoặc kép làm cho nó hoạt động

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

Được rồi, vì vậy Tôi so sánh những gì bạn có với những gì tôi có, và nó chỉ ra lỗi trong mã PHP của tôi. Khi tôi trở lại đúng hay sai, tôi không có họ xung quanh trong dấu ngoặc kép, và tôi không lặp lại chúng. Tôi sử dụng trở lại để thay thế. – Vince

+1

lol đó là những gì tôi đã nói với bạn ngay từ đầu :-) – dt192

+1

không có probs, tôi đã có nhiều lần bản thân mình nó luôn luôn là những điều đơn giản mà rất khó để theo dõi, may mắn ;-) – dt192

4

Về phía php của bạn, bạn nên tiếng vang một số json string, ví dụ tôi sẽ làm như thế này trên validateUser.php:

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

Và hơn với 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

Success: Nó sẽ trở lại tình trạng XHR thành công, ví dụ: 200
Xong: Khi XHR có được thành công thì nó sẽ hoàn thành và trở lại với một dữ liệu trở lại

Hãy thử mã dưới đây

$.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);   
}); 
Các vấn đề liên quan