很多人都向在服务器
端调用客户端的函数来操作,也就是在asp中调用java
script脚本中已经定义好的脚本函数。经过研究,发现了一些勉强的方法。
1.
用Response.Write方法写入脚本
比如在你单击按钮后,先操作数据库
,完了后显示已经完成,可以在最后想调用的地方写上
Response.Write("<script type='text/javascript'>alert();</script>");
这个方法有个缺陷就是不能调用脚本文件 中 的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定义,比如 Response.Write("<script type='text/javascript'>function myfun(){...}</script>");
2.
用ClientScript类动态添加脚本
用法如下:在想调用某个javascript脚本函数的地方添加代码,注意要保证MyFun已经在脚本文件中定义过了。
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>MyFun();</script>");
这个方法比Response.Write更方便一些,可以直接调用脚本文件中的自定义函数。
3.
普通的添加控件的Attributes属性
对于普通按钮就是:Button1.Attributes.Add("onclick","MyFun();");
只能在Onload中或类似于onload的初始化过程中添加才有效。而且是先执行脚本函数,无法改变执行顺序。
注意,以上所有方法中,后台代码都不能有转化当前页的代码,比如Redirect等,要把转页代码放在脚本里面
问:
1. 如何在 JavaScript 访问 C# 函数 ?
2. 如何在 JavaScript 访问 C# 变量 ?
3. 如何在 C# 中访问 JavaScript 的已有变量 ?
4. 如何在 C# 中访问 JavaScript 函数 ?
问题 1 答案如下:
javaScript 函数中执行 C# 代码中的函数:
方法一: 1 、首先建立一个按钮,在后台将调用或处理的内容写入 button_click 中 ;
2
、在前台写一个
js
函数,内容为
doc
ument.getElementById("btn1").click();
3
、在前台或后台调用
js
函数,激发
click
事件,等于访问后台
c#
函数;
方法二:
1
、函数声明为
public
后台代码
(
把
public
改成
protected
也可以
)
public string ss()
{
return("a");
}
2
、在
html
里用
<%=fucntion()% >
可以调用
前台脚本
<script language=javascript >
var a = " <%=ss()% >";
alert(a);
</script >
方法三: 1 、 <script language="javascript" >
<!--
function __doPostBack(eventTarget, eventArgument)
{
var theForm = document.Form1;
//
指
runat=server
的
form
theForm.__EVENTTARGET.value = eventTarget;
theFrom.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
-- >
</script >
<input id="Button1" type="button" name="Button1" value="
按钮
" >
方法四: <script language="javascript" >
function SubmitKeyClick()
{
if (event.keyCode == 13)
{
event.cancelBubble = true;
event.returnValue = false;
document.all.FunName.value="
你要调用的函数名
"
;
document.form[0].submit();
}
}
</script >
<INPUT id="aaa" type="text" >
<input type="hidden" name="FunName" > 〈! -- 用来存储你要调用的函数 -- 〉
在 .CS 里有:
public Page_OnLoad()
{
if (!Page.IsPost())
{
string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";
// 根据传回来的值决定调用哪个函数
switch(strFunName)
{
case "enter()":
enter() ; // 调用该函数
break;
case " 其他 ":
// 调用其他函数
break;
default:
// 调用默认函数
break;
}
}
}
public void enter()
{
//…… 比如计算某值
}
问题 2. 如何在 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
获得值。
3. 如何在 C# 中访问 JavaScript 的已有变量 ?
答案如下:
方法一: 1 、前台使用静态文本控件隐藏域,将 js 变量值写入其中;
2
、后台用
request["id"]
来获取值;
方法二:可以用 cookie 或 session