0

我已经阅读了几篇关于这个问题的帖子(这里和其他网站),但没有人为我工作。我正在尝试在注册过程中检查给定的电子邮件是否已在数据库中注册。

我有一个名为 Register.aspx 的页面,我在其中声明了以下 JavaScript 函数:

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.vb 后面的代码中,我有以下内容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

我正在尝试通过 a 启动 JavaScript 函数,CustomValidator但我从 Chrome 的控制台收到以下消息:

Uncaught TypeError: Cannot read property 'Value' of undefined

错误出现在该行中

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

所以-总是使用 Chrome-,我在该行设置了一个断点,并且从控制台,我写了

args.Value

我得到了正确的值,即我输入的电子邮件地址。所以...我有点迷路了。

我很感激任何帮助。

4

1 回答 1

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

我希望这对某人有用。有一个使用 C# 几乎相同的问题可以帮助我使其工作。

问候,

于 2012-12-14T13:08:50.543 回答