前台
<head runat="server">
<title>无标题页</title>
<script src="JScript1.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<input id="Button2" type="button" value="button" onclick="abc()"/>
</div>
</form>
</body>
后台
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
}
[AjaxPro.AjaxMethod]
public int abc()
{
int i=0;
string a = TextBox1.Text;
if ( a== "aa")
{
i = 1;
}
else
{
i = 2;
}
return i;
}
js文件
function abc()
{
var i=WebApplication1._Default.abc().value;
if(i==1)
{
alert("aa");
}
else if(i==2)
{
alert("other");
}
}
设置断点,运行到string a = TextBox1.Text;就不执行了,也不报错或者异常
应该怎么取啊,请大侠告知
在[AjaxPro.AjaxMethod]方法里面是获取不到服务器控件的值。
AjaxPro.AjaxMethod 貌似对HTTP请求进行了拦截,并不会按asp.net页面生命周期顺序执行。可以在pageload里加一个断点试一下,如果在执行AjaxPro.AjaxMethod方法前没有命中断点则说明上面说的是正确的。
解决方法可以给 abc()加一个参数,在html调用abc(document.getElementByID('TextBox1').value)
通过js方法参数进行传递。
如1楼
建议你了解一下ajax的原理和aspx页面的生命周期