最近在做项目时,遇到了js库里调用后台的变量和函数的问题,一开始不知道咋办,google了很多。
1.封装成JavaScript库,其中调用后台C#变量:
网上有三种基本方法:
方法一:1、通过页面上隐藏域访问 <input id="xx" type="hidden" runat="server" >
方法二:1、如后台定义了PUBLIC STRING N;前台js中引用该变量的格式为 ' <%=n% > '或"+ <%=n% >+"
方法三:1、或者你可以在服务器端变量赋值后在页面注册一段脚本
" <script language= 'javascript ' >var temp=" + tmp + " </script >"
tmp是后台变量,然后js中可以直接访问temp获得值。
经过测试,方法不起作用;方法三在html中注册一段脚本,测试可行的是:
<script type="text/javascript" language="javascript">
var v1= "<%=a%>";
var v2= "<%=b%>";
var v3= "<%=c%>";
var v4= "<%=d%>";
var v5= "<%=e%>";
</script>
这样到js脚本中就可以直接调用v1,v2,v3,v4,v5等。
2.封装成JavaScript库,其中调用后台C#中有参函数:
之前网上很多的做法如下:
function UploadToDB(fName) {
rst = '<%= UploadToDB("' + fName + '") %>';
UploadToDB = rst;
}
fName无法 传递到后台,后台获取的值仍然是“ + fName +”。
Web运行过程:
【转】分清楚客户端和服务端,var value=<% =Ceshi(xValue) %>或者var value= ’<% =UploadToDB(“‘+xValue+’”) %>‘都是无法将前台值传到后台的里面的代码是在服务端执行的,执行时间是客户端页面加载之前,那时js根本还未执行,所以没有js变量。
对于调用C#函数,网上更多的人推荐使用AJAX,个人觉得能用AJAX解决的,一般方法也是可以的,可能稍微复杂点罢了。对于无参函数,相对简单,网页上有好几种方法:
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
2、在前台写一个js函数,内容为document.getElementById("btn1").click();
3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
方法二:在html里用 <%=fucntion()% >可以调用前台脚本;
方法三:doPostBack();
方法四:隐式控件;
当有参数传递,甚至有返回值时,就显得比较麻烦了,这里化繁求简,第一种和第四种方法合并,用隐式控件传值【转】:
HTML中JS如下:
<pre name="code" class="javascript">function upload(fid) {
var id = document.getElementById("ctl00_ContentPlaceHolder1_Id");
var btn1 = document.getElementById("ctl00_ContentPlaceHolder1_Btn1");
id.value = fid;
btn1.click();
return id.value;
}
</script>
HTML中需要添加一下:
<asp:HiddenField ID="Id" runat="server" Value="1"/>
<div style="display:none;">
<asp:Button ID="Btn1" Width="0" runat="server" Text="" OnClick="UploadToDB" />
</div>
后台C#UploadToDB函数:
<span style="font-size:18px;">//public int UploadToDB(string fId)
public void UploadToDB(object sender, EventArgs e)
{
int rst = 0;
string fId =this.Id.Value; //隐式控件传递值
//return rst;
this.Id.Value =rst;
}</span>
js脚本中就可以直接调用C#中的变量或者有参函数:
webObj.HttpAddPostString("id", v1);
alert(getGoodsList(returnValue));
总结:以上只是鄙人初识asp.net的见解,还请大牛多多指导,检查提出意见。( ⊙ o ⊙ )!,勇士夺得西部冠军了(10,1-3逆转)。