0

この問題に関するいくつかの投稿を読みました (ここおよび他のサイト) が、誰も私のために働いていません。登録プロセス中に、特定の電子メールがデータベースに既に登録されているかどうかを確認しようとしています。

次の JavaScript 関数を宣言した Register.aspx というページがあります。

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

を介して 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 に答える