JQuery AJAX 方法同时执行 "success" 和 "failure"

JQuery AJAX method executes both "success" and "failure"

我有一个 AJAX 方法来告诉用户注册时电子邮件是否可用。

$('#mainArea_txtEmail').keyup(function (e) {
    var inputemail = $(this).val();
    if (inputemail.length > 5)
    {
        $.ajax({
            type: "POST",
            url: "Default.aspx/isEmailAvailable",
            data: '{email: "' + inputemail + '" }', 
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: alert("available"),
            failure: alert("unavailable")
        });
    }
});

当用户输入电子邮件时,无论是否可用,浏览器每次都会显示成功警报,然后显示失败警报。

这是 C# 方法:

[System.Web.Services.WebMethod]
    public static string isEmailAvailable(string email)
    {
        BasePage page = new BasePage();
        string returnvalue;
        if (page.db.UserGet(email) == null)
        {
            returnvalue = "true";
        }
        else
        {
            returnvalue = "false";
        }
        return returnvalue;
    }

db.UserGet 方法将尝试查找电子邮件地址与 email 参数匹配的用户的数据库记录。如果有,则填充 User class 实例并且 page.db.UserGet 不为空,这意味着电子邮件已被接收。如果它仍然为空,则没有找到具有该电子邮件的用户并且该电子邮件可用。

我做错了什么?

我正在学习本教程 (http://www.c-sharpcorner.com/UploadFile/20abe2/how-to-check-user-name-or-email-availability-using-Asp-Net)

你的语法不行,你不能用alert作为回调函数。 alert 需要包装在适当的函数中,否则它会立即触发

  $.ajax({
        type: "POST",
        url: "Default.aspx/isEmailAvailable",
        data: '{email: "' + inputemail + '" }', 
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function(serverResponse) {
              alert("available"); 
              /* do something with serverResponse */
        },
        failure: function() { alert("available"); }
    });

$.ajax API Reference