前臺js與後臺C#互相呼叫 & JS於HTML互動
C#程式碼與javaScript函式的相互呼叫?
問:
1.如何在JavaScript訪問C#函式?
2.如何在JavaScript訪問C#變數?
3.如何在C#中訪問JavaScript的已有變數?
4.如何在C#中訪問JavaScript函式?
問題1答案如下:
javaScript函式中執行C#程式碼中的函式:
方法一:1、首先建立一個按鈕,在後臺將呼叫或處理的內容寫入button_click中;
2、在前臺寫一個js函式,內容為document.getElementById("btn1").click();
3、在前臺或後臺呼叫js函式,激發click事件,等於訪問後臺c#函式;
方法二:1、函式宣告為public
後臺程式碼(把public改成protected也可以)
{
return ( " a " );
}
2、在html裡用<%=fucntion()%>可以呼叫
前臺指令碼
var a = "
alert(a);
</ script >
方法三:1、
<!--
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 ="按鈕" onclick ="javascript:__doPostBack('Button1','')" >
ASPX頁面有包含asp:LinkButton或者帶有AutoPostBack屬性且其值為true的伺服器控制元件時,ASP.NET會自動為頁面生成下面的指令碼:
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
這兩個引數分別由隱藏的兩個表單域__ EVENTTARGET和__ EVENTARGUMENT儲存。
這兩個隱藏的表單可以查詢引起頁面回送的控制元件ID和回送時的引數:
string target = Request.Params["__EVENTTARGET"];
string args = Request.Params["__EVENTARGUMENT"];
asp:Button和asp:ImageButton不是使用__doPostBack回送頁面,所以使用這兩個控制元件回送頁面時,上面的程式碼是無效的。
方法四:
function SubmitKeyClick()
{
if (event.keyCode == 13 )
{
event.cancelBubble = true ;
event.returnValue = false ;
document.all.FunName.value = " 你要呼叫的函式名 " ;
document.form[ 0 ].submit();
}
}
</ script >
< INPUT onkeypress ="SubmitKeyClick()" 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
4.如何在C#中訪問JavaScript函式?
答案如下:
c#程式碼中執行javaScript函式:
方法一:1、Page.RegisterStartupScript("ggg","<script>SetVisible(1);</script>");
方法二:使用Literal類,然後
{
string str;
str = " <script language='javascript'> " ;
str += " selectRange() " ;
str += " </script> " ;
// Literal1.Visible=true;
Literal1
【引用 笨笨的空間 】
----------------------------------------JS於HTML互動------------------------------------------------------------------------
index.html檔案:
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb2312"
/>
<title>.js 檔案怎樣接受html 傳遞的引數</title>
<script language="javascript"
src="main.js" >
</script>
</head>
<body
style="height:300px;">
<form>
<input type="button"
name="button1" value="測試" onClick="javascript:Mytest();">
<input
type="hidden" id="linksrc" name="" value="
http://www.baidu.com">
<input type="hidden" name="linksrctempss"
value="
http://www.sina.com">
</form>
</body>
</html>
main.js的內容:
function
Mytest(){
var linksrc = document.getElementById("linksrc").value;
var
linksrctempss = document.getElementsByName("linksrctempss")[0].value;
alert("linksrc="+linksrc);
alert("linksrctempss="+linksrctempss);
}
【備註:document.getElementsByName(name)獲取的是”陣列型別“,document.getElementById(id)獲取的是”值“】