Javascript调用后台方法

时间:2021-09-07 01:14:06
1. javaScript函数中执行C#代码中的函数:
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
        2、在前台写一个js函数,内容为document.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 type="button" 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 type="text">
<input type="hidden" > 〈!--用来存储你要调用的函数 --〉
在.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()
{
//……比如计算某值
}


方法五:利用PageMethods调用后台代码  
  
PageMethod方法介绍:    
PageMethods.FunctionName(Paramter1,Parameter2,...,SuccessMethod, FailedMethod, userContext);  
其中,前面Paramter1,Parameter2,...,表示的是FunctionName的参数,类型是Object或Array;  
SuccessMethod是需要使用后台返回结果的Js方法,  
FailedMethod是当后台的csFunctionName方法发生异常情况下的执行的Js方法(容错处理方法),  
userContext是可以传递给SuccessMethod方法,或是FailedMethod方法的任意内容。  
  
  
  
实现方法五按照以下步骤:  
  
  
  
1.在后台创建方法,必须是static(静态的),方法必须是public类型的,否则访问不到会报异常,  
  
接着要在该方法头部上加上[System.Web.Services.WebMethod],来标注方法特性。  
  
2.在前台页面加入ScriptManager控件,并把其EnablePageMethods属性设为true。  
  
3.调用PageMethods,由于该方法有很多重载,现在只说最简单的实现。  
  
PageMethods.FunctionName(回调的js方法);      //其中FunctionName为后台创建的静态方法名,回调js方法为前台接受结果的方法。  
  
  
  
例子:  
  
后台代码:  
  
 [System.Web.Services.WebMethod]  
    public static string ShowValue()  
    {  
        return "js调用后台方法";  
  
    }  
  
  
  
前台代码:  
  
 <script type="text/javascript">  
          
        function bclick()  
        {  
            PageMethods.ShowValue(sshow);  
        }  
          
        function sshow(val)       //回传方法用val接受后台代码ShowValue的执行结果  
        {  
            document.getElementById("show").innerText = val;  
        }  
          
         
    </script>  
  
  
  
<input id="Button1" type="button" value="click" onclick="bclick();" />  
  
  <div id="show">  
   </div>  




2.如何在JavaScript访问C#变量?
答案如下:
方法一:1、通过页面上隐藏域访问 <input 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类,然后
private void Button2_Click(object sender, System.EventArgs e)
{
string str;
str=" <script language='javascript'>";
str+="selectRange()";
str+=" </script>";
//Literal1.Visible=true;
Literal1.Text=str;
}