使用 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> </td>
</tr>
<tr>
<td>
birth</td>
<td>
<input id="Text3" type="date" /></td>
<td> </td>
</tr>
<tr>
<td>
<input id="Button1" type="submit" value="Subscripe" /></td>
<td> </td>
<td> </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;
}
我正在使用 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> </td>
</tr>
<tr>
<td>
birth</td>
<td>
<input id="Text3" type="date" /></td>
<td> </td>
</tr>
<tr>
<td>
<input id="Button1" type="submit" value="Subscripe" /></td>
<td> </td>
<td> </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;
}