我想检查在文本框中输入的用户名是否存在于数据库中而没有回发。并且我使用ajax jquery方法后面的ide是当用户输入名称时方法检查它是否是是否存在于数据库中,如果存在,则会显示标签,例如"用户名存在"否则标签将被隐藏。现在问题是即使在数据库中存在用户名或者其他页面只是继续显示警告消息"错误"。不知道问题是什么??
使用ajax jquery方法
$("#txtteamname").focusout(function () {
var txtFld = document.getElementById("txtteamname");
if ( txtFld.value == 'Team Name') {
this.style.color = '#787878';
}
else if (txtFld.value == ' ') {
this.style.color = '#787878';
}
else {
this.style.color = 'black';
$.ajax({
type: 'POST',
contentType: "application/json; charset=utf-8",
url: 'teamcheck.asmx/teamnamecheck',
data: "{'team':'" + txtFld + "' }",
dataType: "json",
async: false,
success: function (msg) {
if (d.msg == 'exist') {
$("#Label8").show();
}
},
error: function () {
alert("Error");
}
});
}
C#
[WebMethod]
public static string teamnamecheck(string team)
{
string flag = "non";
SqlDataReader dr;
string str = "server=JITHU;uid=*****;pwd=***********;database=*********";
SqlConnection con = new SqlConnection(str);
con.Open();
string rs= "select teamname from usertable where teamname ='" + team ;
SqlCommand cmd = new SqlCommand("rs", con);
dr = cmd.ExecuteReader();
if ((dr.Read()))
{
flag = "exist";
return flag;
}
con.Close();
return flag;
}
}
答案 0 :(得分:-1)
我认为你的主要问题在于此代码
data: "{'team':'" + txtFld + "' }",
你在这里描述了txtFld
var txtFld = document.getElementById("txtteamname");
这将使txtFld成为HTML DOM
而非string
,就像您在服务器端需要的那样
public static string teamnamecheck(string team)
因此您的AJAX调用未到达服务器中的功能,请尝试将数据更改为此
data: "{'team':'" + txtFld.value + "' }",
只是为了确保它能够到达服务器,在
内的任何地方的服务器代码中放置一个断点public static string teamnamecheck(string team) {
... // your code, place the breakpoint here
}
并取消注释teamcheck.asmx
[System.Web.Script.Services.ScriptService]