2015-01-12 2 views
0

У меня есть метод AJAX, чтобы сообщить пользователю, доступно ли электронное письмо при регистрации.Метод JQuery 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, а page.db.UserGet не имеет значения NULL, то есть электронное письмо берется. Если он по-прежнему равен нулю, то не было найдено ни одного пользователя с этим электронным письмом, и письмо будет доступно.

Что я здесь делаю неправильно?

Я следовал этому учебнику (http://www.c-sharpcorner.com/UploadFile/20abe2/how-to-check-user-name-or-email-availability-using-Asp-Net)

+0

вы не можете передать 'alert' в качестве ссылки обратного вызова – charlietfl

ответ

1

Вашего синтаксис не будет работать, вы не можете использовать 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

+2

Пути, чтобы описать этот вопрос здесь является то, что обработчики успеха и отказа должны быть ссылками на функции. 'alert (" available ")' - вызов функции (то, что вызывается сразу), а не ссылку на функцию, которую можно вызвать позже. 'function() {alert (" available ");}' является ссылкой на функцию. – jfriend00

Смежные вопросы