在本示例中,将展示如何通过AJAX调用服务器端方法来验证用户输入的唯一性。这在实际开发中非常常见,比如在注册用户时需要检查用户名是否已被占用。
首先,需要在服务器端创建一个方法来检查数据库中是否存在用户输入的值。如果存在,则返回一个错误信息;如果不存在,则不返回任何信息。
接下来,将使用jQuery的AJAX功能在客户端调用这个服务器端方法。当用户输入值并失去焦点时,将触发AJAX请求。
以下是实现的详细步骤:
首先,需要在服务器端创建一个方法来检查数据库中是否存在用户输入的值。
[WebMethod]
public static string IsExists(string value)
{
// 代码来检查唯一值,调用数据库来检查这个
return "True";
}
在上述代码中,使用了WebMethod属性来标记这个方法,使其可以作为Web服务的一部分被调用。
在客户端,将使用jQuery的AJAX功能来调用服务器端方法。
function IsExists(pagePath, dataString, textboxid, errorlableid) {
$.ajax({
type: "POST",
url: pagePath,
data: dataString,
contentType: "application/json; charset=utf-8",
dataType: "json",
error: function(XMLHttpRequest, textStatus, errorThrown) {
$(errorlableid).show();
$(errorlableid).html("Error");
},
success: function(result) {
var flg = true;
if (result != null) {
flg = result.d;
if (flg == "True") {
$(errorlableid).show();
} else {
$(errorlableid).hide();
}
}
}
});
}
在上述代码中,定义了一个名为IsExists的函数,它接受四个参数:页面路径、数据字符串、文本框ID和错误标签ID。
当用户输入值并失去焦点时,将调用这个函数。
function focuslost() {
var pagePath = window.location.pathname + "/IsExists";
var dataString = "{ 'value':'" + $("#txtData").val() + "' }";
var textboxid = "#txtData";
var errorlableid = "#lblError";
IsExists(pagePath, dataString, textboxid, errorlableid);
}
在上述代码中,定义了一个名为focuslost的函数,它将调用IsExists函数。
最后,需要在HTML页面中添加一个表单,包含一个文本框和一个错误标签。
<form id="form1" runat="server">
<asp:Label Text="Enter unique value: " runat="server" id="lbl" />
<asp:TextBox runat="server" id="txtData" />
<div style="display: none;" runat="server" id="lblError">Record exists</div>
</form>
在上述代码中,定义了一个包含文本框和错误标签的表单。当用户输入值并失去焦点时,将调用focuslost函数。