2013-04-18 2 views
9

Я немного смущен тем, как использовать функцию ajax .done(). Я работаю над проверкой формы, чтобы проверить, существует ли пользователь в базе данных, и хотя ajax будет лучшим подходом (все еще изучая его). У меня есть php-файл, который возвращает true, если пользователь существует, и false, если пользователь не существует. Как передать значение boolean в параметр для выполняемой функции?Confused on jquery .ajax .done() function

$(".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

+0

@ DanielTillin Я видел пример на веб-сайте jquery, похожий на мой, но я его отредактировал лучше, но я не уверен, откуда он получает параметр «результат». – Vince

+1

результатом являются данные, которые возвращаются из сообщения, но возвращаемые данные являются строкой, поэтому для них вы будете сопоставлять «true» или «false», если это то, что выдает ваш php-файл. – dt192

ответ

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"); 
    } 
    }); 
}); 

PHP JSON

<?php 

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

Javascript JSON

$(".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

+1

lol вот что я говорил вам с самого начала :-) – dt192

+1

никаких проблем, я был там много раз сам, это всегда простые вещи, которые трудно отследить, удачи ;-) – dt192

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

Success: Она возвращает статус 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);   
});