用.Net 做网站的童鞋,经常会遇到要用javascript调用后台方法或变量的情况。但有时候就莫名其妙的行不通,我今天试验了一下,总结出几点,欢迎大家拍砖。
首先呢,写一个简单的获取后台方法的例子:
<style type="text/css">
function aa(){
//alert("<%=a%>"); //调用变量
alert("<%=aaa()%>"); //调用方法
}
</style>
后台代码:
public string a="1"; //注意一定要是public的,下同
public string aaa(){
Random rand=new Random();
a=rand.Next().toString();
return a;
}
重点来了,如果你用的是Html 的<input > 控件,比如<input type="button" value="btn1" οnclick="aa()"> 吧,那么运行后,你会发现alert的总是同一个值(但不是1 )。你是否会这样想:难道它只有在登陆的时候调用一次aa()方法?
答案是NO!
本人拙见,因为aaa()方法是在后台写的,也就是在服务器端,那么只有在向服务器发出请求后才会获得新的a数据,否则,本地缓存的就a值就一直保持为刚登陆页面时的值。
所以,要想重新刷新页面获取新值,就应该用asp控件,但需要提醒大家注意的是,<asp:Button Text="btn2" runet="server" onclientclick="aa()">调用的是onclientclick属性,而非onclick方法。
另外,我们想用javascript调用后台值或方法,通常是不想刷新页面的,因为页面一旦刷新,一些我们需要的值可能就恢复默认值了。所以,个人认为,javascript调用后台值或方法只适合部分需求。
如果你需要的值已经在当前页面的控件属性存在,并且只是获取客户端操作的值,那么就应该用前台javascript代码。
如果你需要的值要与服务器交互,或者需要获取服务器端的新值,那么就用后台代码,毕竟后台代码写起来方便。