2012-09-26 76 views
0

我已閱讀關於此問題的幾篇文章(這裏和其他網站),但沒有人爲我工作。我試圖在註冊過程中檢查給定的電子郵件是否已經在數據庫中註冊過。在Register.aspx.vb使用VB.NET檢查電子郵件的可用性WebMethod + JSON + CustomValidator

function check_email_availability(src, args) { 
    $.ajax({ 
    type: "POST", 
    async: false, 
    timeout: 500, 
    contentType: "application/json", 
    url: "Register.aspx/CheckEmailAvailability", 
    data: "{ 'email' : '" + args.Value + "' }", 
    success: function (result) { 
     args.IsValid = result.d; 
    } 
    }); 
} 

在另一方面,在後面的代碼,我有:

我有一個叫Register.aspx頁面中,我已經聲明瞭遵循JavaScript函數後續WebMethod

<System.Web.Services.WebMethod()> _ 
Public Shared Functiion CheckEmailAvailability(ByVal email As String) As String 
    If Membership.GetUser(email) Is Nothing Then 
    Return "True" 
    Else 
    Return "False" 
End Function 

我試圖通過CustomValidator啓動JavaScript函數,但我從Chrome的控制檯收到以下消息:

Uncaught TypeError: Cannot read property 'Value' of undefined 

正好出現在該行的錯誤

data: "{ 'email' : '" + args.Value + "' }", 

所以-​​always使用鍍鉻,我已經設置在該行斷點,並從控制檯,我已經寫

args.Value 

並且我已經獲得了正確的值,即我輸入的電子郵件地址。所以......我有點失落。

我很感激任何幫助。

+0

而不是在控制檯(可能有多個上下文)進行評估,請嘗試突出顯示該表達式並在其上放置一個監視。 –

+0

明天早上我告訴你結果。謝謝! – adripanico

回答

0

那麼,我終於做到了。我在這裏分享使用的代碼。爲了進入上下文,在用戶註冊過程中,我想檢查電子郵件的可用性。

Register.aspx頭:

<script type="text/javascript"> 
    function check_email_availability(src, args) { 
    var isValid; 
    $.ajax({ 
     type: "POST", 
     url: "Register.aspx/CheckEmailAvailability", 
     timeout: 500, 
     data: "{'email' : '" + args.Value + "'}", 
     contentType: "application/json; charset=utf-8", 
     async: false, 
     success: function (result) { 
       isValid = result.d; 
       } 
    }); 
    args.IsValid = isValid; 
    } 
</script> 

Register.aspx身體:

<asp:TextBox ID="tbEmail" runat="server" CssClass="TextBox" ClientIDMode="Static" TabIndex="1" /> 
<asp:CustomValidator ID="CValidatorEmail" runat="server" ControlToValidate="tbEmail" ValidateEmptyText="false" ClientValidationFunction="check_email_availability" ErrorMessage="Email already in use" SetFocusOnError="True" /> 

在代碼隱藏(Register.aspx.vb):

<System.Web.Services.WebMethod()> _ 
Public Shared Function CheckEmailAvailability(ByVal email As String) As Boolean 
    Dim oMU As MembershipUser = Membership.GetUser(email) 
    If oMU IsNot Nothing Then Return False Else Return True 
End Function 

我希望這將是有益的給某人。有一個question almost identical using C#幫助我使它工作。

Regards,

相關問題