.aspx中使用ajax的疑问?
在我的.aspx页面上存在着:
server控件: TextBox1
TextBox2
Button3
Label1
Label2
Label3
等服器端控件
通过在TextBox1,TextBox2中输入用户名和密码来进行登录验证
传统的C#做法是在.aspx.cs中写:
Button3_click()
{
SqlConnection conn=new SqlConnection("Data Source=localhost;Initial Catalog=db1;uid=sa");
string abc="select * from 用户管理 where 姓名='"+username.Value.ToString().Trim()+"' and 密码='"+psd.Value.ToString().Trim()+"'";
SqlDataAdapter sda1=new SqlDataAdapter(abc,conn);
DataSet chy=new DataSet();
DataTable chyt=new DataTable();
chy.Tables.Add(chyt);
chy.Tables[0].TableName="chyt";
sda1.Fill(chy,"chyt");
if(chyt.Rows.Count>0)
{
Label1.Text=chyt.Rows[0][2].ToString().Trim();
Label2.Text=chyt.Rows[0][3].ToString().Trim();
Label3.Text=chyt.Rows[0][4].ToString().Trim();
}
}
登录成功后,能够正常的将Label1,2,3的值填入进去(页面刷新后)
现在我写成ajax方式:
在前端:
将server控件Button3去掉,写成HTML的<input type="button" value="login" id="ok" name="ok" onclick="okclk()">
在.cs中:
[Ajax.AjaxMethod()]
public string testdb(string un,string psd)
{
SqlConnection conn=new SqlConnection("Data Source=localhost;Initial Catalog=db1;uid=sa");
string abc="select * from 用户管理 where 姓名='"+un.ToString().Trim()+"' and 密码='"+psd.ToString().Trim()+"'";
SqlDataAdapter sda1=new SqlDataAdapter(abc,conn);
DataSet chy=new DataSet();
DataTable chyt=new DataTable();
chy.Tables.Add(chyt);
chy.Tables[0].TableName="chyt";
sda1.Fill(chy,"chyt");
if(chyt.Rows.Count>0)
{
Label1.Text=chyt.Rows[0][2].ToString().Trim();
Label2.Text=chyt.Rows[0][3].ToString().Trim();
Label3.Text=chyt.Rows[0][4].ToString().Trim();
}
}
在前端页面代码中:
<script language=javascript>
function okclk()
{
test.testdb(document.all.TextBox1.value,document.all.TextBox2.value);
}
</script>
为什么就不能正常的填写Label1,2,3的值了呢???????????????
应该如何写才能运行成功呀????????????????
问题点数:30、回复次数:4Top
1 楼iuhxq(小灰)回复于 2006-03-01 15:40:49 得分 15
填写值要放在客户端处理,数据在后台代码里返回,在前台接收
因为现在Label1,2,3已经不是服务器控件了,而且你访问网页的运行顺序已经变了,因为你用AJAX的时候修改了web.configTop
2 楼shulihua(清水无香)回复于 2006-03-01 15:44:24 得分 15
你的回调方法哪去了?Top
3 楼lhdjk(耗子)回复于 2006-03-01 16:37:36 得分 0
我写成了这样:
在.cs中:
[Ajax.AjaxMethod()]
public string testdb(string un,string psd)
{
SqlConnection conn=new SqlConnection("Data Source=localhost;Initial Catalog=db1;uid=sa");
string abc="select * from 用户管理 where 姓名='"+un.ToString().Trim()+"' and 密码='"+psd.ToString().Trim()+"'";
SqlDataAdapter sda1=new SqlDataAdapter(abc,conn);
DataSet chy=new DataSet();
DataTable chyt=new DataTable();
chy.Tables.Add(chyt);
chy.Tables[0].TableName="chyt";
sda1.Fill(chy,"chyt");
return chy;
}
在前端页面代码中:
<script language=javascript>
function okclk()
{
var response=test.testdb(document.all.TextBox1.value,document.all.TextBox2.value,callback_ds);
}
function callback_ds(response)
{
if(response.value!=null && typeof(response.value)==object && response.value.tables!=null)
{
var ds=response.value;
document.getElementById("Label1")=ds.Tables[0].Rows[0][2];
}
}
</script>
但那个 var response是一个局部定义变量,怎么传到callback_ds中去呀?Top
4 楼lincai(隐身)回复于 2006-03-01 17:40:43 得分 0
喜欢看实例的问题,容易理解,帮UP了。
PS:楼主是不是不知道CSDN问问题要结贴的Top




