簡體   English   中英

無法使用回調獲取來自ajax調用的響應

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

在服務器端,您必須返回(打印) truefalse代碼(如果您使用的是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM