用ajax前台不能调用后台的函数

doyouknowm 2008-07-07 05:43:25
在前台相关代码如下:
<input onkeydown="EmployeeHandle()" id="txtEmployeeNum"></FONT> 
function EmployeeHandle()
{
if (event.keyCode==13)
{
alert(document.getElementById("txtEmployeeNum").value);
if( EmployeeCheck(txtEmployeeNum).value==false)
{
alert("出错了,请重新输入");
}
}
}
后台相关代码如下:
private void Page_Load(object sender, System.EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(OvertimeWorkApply.WebForm1));//ajax方法注册
//this.txtEmployeeNum.Attributes.Add("onkeydown","EmployeeHandle()");
}

[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]
public bool EmployeeCheck(string strID )
{
Response.Write ("<script language='javascript'>alert('2222');</script>");

SqlConnection conn=new SqlConnection(ConfigurationSettings.AppSettings["ConnectString"]);
conn.Open();

SqlCommand comm=new SqlCommand("Cb_land",conn);
comm.CommandType=CommandType.StoredProcedure;

SqlParameter par=new SqlParameter("@user",SqlDbType.VarChar,8);
par.Value=strID ;
comm.Parameters.Add(par);

SqlDataAdapter da=new SqlDataAdapter();
da.SelectCommand=comm;

DataSet ds=new DataSet();
da.Fill(ds);

Response.Write ("<script language='javascript'>alert(ds.Tables[0].Rows.Count);</script>");
if (ds.Tables[0].Rows.Count!=0)
{
this.lblEmpName.Text=ds.Tables[0].Rows[0][0].ToString();
return true;
}
else
{
return false;
}
}
现在前台的代码调用不了后台的这个函数,alert(document.getElementById("txtEmployeeNum").value);这句还可以正常执行。是哪儿有问题呢,请大家指点一下
...全文
109 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
doyouknowm 2008-07-08
  • 打赏
  • 举报
回复
现在EmployeeCheck这个函数就调用不了,我把Response.Write (" <script language='javascript'>alert(ds.Tables[0].Rows.Count); </script>"); 去掉还是不行,为什么不能调用呢?
alwaysLonely 2008-07-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 brooklyng60 的回复:]
谁说不可能啊,在JS中注册回调,然后在CS中写回调事件,结果返回前台,我们现在的几个项目都是做这的
[/Quote]

你还没搞清楚注册那个回调到底是怎么回事呢吧.
begonia_ref 2008-07-08
  • 打赏
  • 举报
回复

可以把
public bool EmployeeCheck(string strID )
改为
public string EmployeeCheck(string strID )
返回的是要赋给label的值
去掉 this.lblEmpName.Text=ds.Tables[0].Rows[0][0].ToString();

添加客户端脚本,用于接收返回值

function EmployeeHandle()
{
if (event.keyCode==13)
{
alert(document.getElementById("txtEmployeeNum").value);
if( OvertimeWorkApply.WebForm1.EmployeeCheck(txtEmployeeNum,EmployeeHandle_CallBack).value==false)
{
alert("出错了,请重新输入");
}
}
function EmployeeHandle_CallBack(respose)
{
document.getElementById("<%=this.lblEmpName.ClientID %>").value = respose.value;
}
begonia_ref 2008-07-08
  • 打赏
  • 举报
回复

Response.Write (" <script language='javascript'>alert(ds.Tables[0].Rows.Count); </script>");
this.lblEmpName.Text=ds.Tables[0].Rows[0][0].ToString();

在AJAX方法中不能执行
doyouknowm 2008-07-08
  • 打赏
  • 举报
回复
没有人知道么?
brooklyng60 2008-07-07
  • 打赏
  • 举报
回复
谁说不可能啊,在JS中注册回调,然后在CS中写回调事件,结果返回前台,我们现在的几个项目都是做这的
bwangel 2008-07-07
  • 打赏
  • 举报
回复
我只知道前台的JS和后台的asp.net是有着不可逾越的鸿沟的.一个是服务端,一个是客户端,怎么能说调用就调用.
象你这样在JS里直接调用后台C#的函数,是根本不可能的.

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧