2015-01-12 1 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") 
     }); 
    } 
}); 

사용자가 전자 메일을 입력 할 때 사용 여부에 관계없이 브라우저는 매번 성공 경고를 표시 한 다음 실패 경고를 표시합니다.

[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 매개 변수와 일치하는 이메일 주소로 사용자의 데이터베이스 레코드를 찾을 수 있습니다 : 여기

는 C# 방법입니다. 있는 경우 User 클래스 인스턴스가 채워지고 page.db.UserGet은 null이 아니므로 전자 메일이 전송됩니다. 여전히 null이면 해당 이메일을 가진 사용자를 찾을 수없고 이메일을 사용할 수 없습니다.

내가 뭘 잘못하고 있니?

나는이 튜토리얼 (http://www.c-sharpcorner.com/UploadFile/20abe2/how-to-check-user-name-or-email-availability-using-Asp-Net)

+0

당신이 콜백 참조 – 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'를 전달할 수 없습니다 발사합니다 성공 및 실패 처리기는 함수 참조 여야합니다. 'alert ("available")'는 나중에 호출 될 수있는 함수 참조가 아닌 함수 호출 (즉시 호출되는 것)입니다. 'function() {alert ("available");}'은 함수 참조입니다. – jfriend00

관련 문제