[英]Unable to use callback to get response from ajax call
我正在使用jQuery Validator插件嘗試檢查ajax調用后將表單中輸入的電子郵件地址是否唯一,該調用將電子郵件傳遞給腳本,以檢查該電子郵件是否已存在於數據庫中。 我正在使用一個回調函數來嘗試獲取ajax查詢的結果,但該函數始終返回未定義的。 我不確定自己在做什么錯。 這是代碼:
jQuery.validator.addMethod("unique", function () {
function foo(callback) {
$.ajax({
type: 'POST',
async: true,
url: '/form_processor',
data: 'action=email_validate&email=' + $("#email").val(),
success: callback
});
}
var return_value = foo(function (result) {
if (result !== 'g') {
return false;
} else {
return true;
}
});
alert(return_value);
}, "Email address taken. Choose another.");
如果您使用的是jQuery Validator,則內置方法將對其進行驗證,因此您的驗證代碼將如下所示:
$(document).ready(function(){
$( "#myform" ).validate({
rules: {
email: {
required: true,
email: true,
remote: {
url: "form_processor",
type: "post",
data: {
email: function() {
return $( "#email" ).val();
}
}
}
}
},
messages:
{
email:
{
required: "Please enter your email address.",
remote: "Email already taken"
}
}
});
})
在服務器端,您必須返回(打印) true
或false
代碼(如果您使用的是php)
<?php
$email = $_POST['email'];
$query = "SELECT ID FROM users WHERE user_email = "$email" LIMIT 1;";
$results = $mysqli->query($query);
if($results->num_rows == 0)
{
echo "true"; //good to register
}
else
{
echo "false"; //already registered
}
}
else
{
echo "false"; //invalid post var
}
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.