以下代码程序运行的时候,无论在文本框输入什么内容(无论数据库是否存在已有用户名),函数总返回true(如果不存在应返回false才对)!请各位大侠帮忙解困!
aspx页面代码:
<body>
<form id="MyForm" runat="server">
<div>
<table>
<tr>
<td>用户名:</td>
<td>
<input id="TextYHM" name="TextYHM" type="text" onblur='checkYHM(this,"tis1","tis2","tis3")' /><br />
<div id="tis1" class="divclass">用户名不能为空!</div><br />
<div id="tis2" class="divclass">用户名已存在!</div><br />
<div id="tis3" class="divclass">用户名可用!</div><br /> </td>
</tr>
<tr>
<td></td>
<td>
<input id="MyButton" value="注册" type="button" onclick="register()" />
</td>
</tr>
</table>
</div>
</form>
</body>
JS代码:
function checkYHM(field,T1,T2,T3)
{
var str = field.value;
var strT1 = document.getElementById(T1);
var strT2 = document.getElementById(T2);
var strT3 = document.getElementById(T3);
if (str==null||str==""){
strT1.style.display = "block";
}
else {
var MyExistYHM = "<%=existYHM()%>";
if (MyExistYHM){
strT2.style.display = "block";
}
else {
strT3.style.display = "block";
}
}
}
CS后台代码:
protected void Page_Load(object sender, EventArgs e)
{
}
public bool existYHM()
{
string str1 = string.Empty;
str1 = Request.Form["TextYHM"];
string strCon = @"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\downloads\test\App_Data\test.mdf;Integrated Security=True;User Instance=True";
SqlConnection sqlcon = new SqlConnection(strCon);
sqlcon.Open();
string checktSql = "select * from yh where yhm='" + str1 + "'";
SqlCommand com = new SqlCommand(checktSql, sqlcon);
int Count = Convert.ToInt32(com.ExecuteScalar());
sqlcon.Close();
if (Count > 0)
{
return true;
}
else
{
return false;
}
}
var MyExistYHM = "<%=existYHM()%>";
这里写的有问题,本来服务器端的existYHM()返回的是个bool类型,值是true或者false。但在这里MyExistYHM是个字符串类型了,也就是var MyExistYHM="true";或者var MyExistYHM="false";也就是个字符串了,然后你js中的判断if (MyExistYHM)这里是这么写一定是有问题的啦,要么这里你就不要带"",要么你可以给这个变量做个类型转换,var MyExistYHM=new Boolean(MyExistYHM);然后再做判断...
其次另一个问题就是existYHM()这个是服务器端的方法,页面加载时会执行完成,你再输入的时候页面不重新加载的前提下是不会执行的...
你这个肯定是有问题的
var MyExistYHM = "<%=existYHM()%>";只在开始的时候给绑定下数据,所以才会无论在文本框输入什么内容(无论数据库是否存在已有用户名),函数总返回true(如果不存在应返回false才对)!,也就是说这时候你无论再输入什么,都不会再调用existYHM()了。把 existYHM(),写成webmethod就行了,ajax调用。
你写错了 "<%=existYHM()%>";压根就可能没有解析~~
得用ajax的
不想说,其实这代码很傻
看一下webForm的运行过程就知道这完全不是那回事