使用 ajax 调用 asp.net 网络表单代码

call asp.net web forms code behind using ajax

我正在使用 ASP.NET 网络表单技术和 jquery ajax 处理此示例场景: 在输入文本元素上发生更改事件时,ajax 请求必须发送到 asp.net 页面后面的代码中的函数(登录。aspx/GetDoublicate)以检查数据库中是否存在电子邮件,并且return 对或错。 我的代码:

        <form id="form1" runat="server">
<div>

    <table style="width:100%;" dir="rtl">
        <tr>
            <td class="auto-style1">user name</td>
            <td class="auto-style1">
                <input id="Text1" type="text" /></td>
            <td class="auto-style1"></td>
        </tr>
        <tr>
            <td class="auto-style1">password</td>
            <td class="auto-style1">
                <input id="Password1" type="password" /></td>
            <td class="auto-style1"></td>
        </tr>
        <tr>
            <td class="auto-style1">
                confirm password</td>
            <td class="auto-style1">
                <input id="Password2" type="password" /></td>
            <td class="auto-style1"></td>
        </tr>
        <tr>
            <td>
                email</td>
            <td>
                <input id="Text2" runat="server" type="email" /></td>
  
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>
                birth</td>
            <td>
                <input id="Text3" type="date" /></td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td>
                <input id="Button1" type="submit" value="Subscripe" /></td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
    </table>

</div>
            </form>
    
    




<div id="fffg">

</div>

ajax 请求码

 <script>


        $(document).ready(function () {
            $('#Text2').change(function () {

                $.ajax({
                    type: "GET",
                    url: "Login.aspx/GetDoublicate",
                    'data': {"email":$('#Text2').val() },
                    //contentType: "application/json; charset=utf-8",
                    dataType: "text",
                    success: function (response) {
                        console.log(response);
                    }
                });
                

            })

        })
        

    </script>

Login.aspx后面的页面代码:

  public bool GetDoublicate()
        {


            SqlConnection con = new SqlConnection(connectionString);
            con.Open();
            string sqltext = "select id from CoAuthor where email='" + Request.Params["email"] + "'";
            SqlCommand cmd = new SqlCommand(sqltext, con);
            string x = cmd.ExecuteScalar().ToString();
                      con.Close();
            if (string.IsNullOrEmpty(x))
            {
                return true;
            }
            else return false;




        }

之后我得到了这个: result

在使用控制台记录响应后,我不仅打印了 true 或 false,还打印了我的页面整个元素,这意味着我不需要成功调用该函数。

我尝试使用 WebMethod decorate 但同样的失败结果指出我需要从数据库中获取数据,而静态方法无法做到这一点。

我尝试使用更新面板并将隐藏的 ASP 按钮放入其中,因此当(更改事件发生在 Text2 上)我使用 jquery .click 方法单击隐藏按钮时,但我也不能得到任何结果。

在此先感谢大家。

经过数小时的尝试和研究,我找到了解决方案,这里是我的完整代码:

 $(document).ready(function () {
        $('#Text2').change(function () {
            var ema = $('#Text2').val();
            $.ajax({
                type: "POST",
                url: "Login.aspx/GetDoublicate",
                // data: '{"email":'+$('#Text2').val()+ ',}',
                data: JSON.stringify({ "email":ema }),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    //   console.log(response.d);
                    if(response.d == true)
                    { alert("doublicate email discovered"); }
                else {alert("Ok, go on")};
                }
                ,
                error: function (xhr, err) { alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status + "\nresponseText: " + xhr.responseText); }

            });
            

        })

    })

注意 jSon 参数必须与调用参数的函数同名。

此处asp代码: [网络方法] public static bool GetDoublicate(字符串电子邮件) {

        SqlConnection con = new SqlConnection(connectionString);
        con.Open();
        string sqltext = "select id from CoAuthor where email='" + email + "'";
        SqlCommand cmd = new SqlCommand(sqltext, con);
        SqlDataReader dr= cmd.ExecuteReader();
        while (dr.Read())
        {
            return true;
        }
        con.Close();
        return false;
        



    }