js调用后台代码的几种方式

  1. JS调用后台方法大全

    javascript函数中执行C#代码中的函数:
    方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
    2、在前台写一个js函数,内容为document.getElementById("btn1").click();
    3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;

    方法二:1、函数声明为public
    后台代码(把public改成protected也可以)
    publicstringss()
    {
    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="按钮"onclick="javascript:__doPostBack(‘Button1‘,‘‘)">

    方法四:<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 onkeypress="SubmitKeyClick()"id="aaa"type="text">
    <input type="hidden"name="FunName">〈!--用来存储你要调用的函数--〉

    在.CS里有:
    publicPage_OnLoad()
    {
    if(!Page.IsPost())
    {
    stringstrFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";
    //根据传回来的值决定调用哪个函数
    switch(strFunName)
    {
    case"enter()":
    enter() ; //调用该函数
    break;
    case"其他":
    //调用其他函数
    break;
    default:
    //调用默认函数
    break;
    }
    }
    }

    publicvoidenter()
    {
    //……比如计算某值
    }

  2.  
  3. JS调用后台带参数的方法

    对于前台调用后台的方法,我们想到最多的就是用AJAX,这个是毋庸置疑的, 我就不再这里多说了。我今天主要想说的是用JS调用后台的方法。
    对于后台往前台传值,用这种<%= nameValue%> 方法,我们是在熟悉不过了,由此,我们是否可以用同样的办法达到传值方法返回值的效果呢?
    我在这个项目中最先想到的就是尝试这种(因为这个项目用到了VML,用AJAX以前是不行,不过,后来测试还是没有问题,不过,需要把xmlns=http://www.w3.org/1999/xhtml给保留住)方法,结果是可行的。但是由于需要前台在调用后台的方法时,需要先给其传参数,这个遇到
    了一些麻烦,去网上看了一些解决方案,都是把字符串作为参数传递,而更多的网友是想知道如何传递变量的,呵呵,偶也是其中一个,因为这个变量
    的值是不确定的嘛!后台,得到一名叫“刚刚”的网友帮助,问题解决。现在把方法告知大家,以免在开发的过程中走同样的弯路。
    后台方法:

  4. protected string CsharpVoid(string strCC)
    {
       strCC = "你好!" + strCC;
      return strCC;
     }前台JS
  5.  function Init()
     {
       var v = "中国";
       var s = ‘<%=CsharpVoid("‘+v+‘") %>‘;
       alert(s);
     }
    这样就OK了
  6.  
  7.  
  8. 简单介绍下它的用法:
    
    一.AjaxPro的使用
    
    1.在项目中添加引用,浏览找到AjaxPro.2.dll文件
    
    2.在Web.config中的system.web里面写入以下代码
    </configuration>
    <system.web>
      <httpHandlers>
            <add verb="*" path="*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
          </httpHandlers>
    </system.web>
    <//configuration>
    
    3.在加载事件中,加入
      AjaxPro.Utility.RegisterTypeForAjax(typeof(类名));
    
    4.写的方法都要用
     [AjaxPro.AjaxMethod]开头,然后在写方法
    
    5.调用时必须写清楚
     命名空间名.类名.方法,例:WebUI._Default.getData();
    
    6.调用可分两中方法(同步调用,异步调用)
    
    //在后台写的无参方法
    [AjaxPro.AjaxMethod]
    public string getStr()
    {
            return  "hello my friends";
    }
    //在后台写的有参方法
     [AjaxPro.AjaxMethod]
    public string getString(string str)
    {
         return str + "Say: hello my friends";
    }
    
    a.同步调用
     (1).拖入html控件button
     (2).双击,自动显示在.aspx的脚本中
     (3).在里面写入你要输入的内容
     例:
    //------------------同步调用无参-----------
      function Button1_onclick()
      {
             var res=WebUI._Default.getStr();
             alert(res.value);
      } 
    
    //------------------同步调用有参------------
    function Button2_onclick() //TextBox1为服务器控件
    {
        var str=document.getElementById("<%=TextBox1.ClientID%>").value;
        var res=WebUI._Default.getStr(str);
        alert(res.value);
    }
    
    b.异步调用
     (1).拖入html控件button
     (2).双击,自动显示在.aspx的脚本中
     (3).在里面写入你要输入的内容
     例:
    //-----------------异步调用无参-----------------
    function Button3_onclick() {
        WebUI._Default.getStr(getStrCallBack);
    }
    function getStrCallBack(res)
    {
        alert(res.value);
    }
    //-----------------异步调用有参-----------------
    function Button4_onclick() {
        var str=document.getElementById("<%=TextBox1.ClientID %>").value;
        WebUI._Default.getString(str,getStringCallBack);
    }
    function getStringCallBack(res)
    {
        alert(res.value);
    }
    
    7.调用对象
    
    //对象
    [AjaxPro.AjaxMethod]
    public Class getClass()
    {
           Class cla = new Class();
           cla.C_Id = 100;
           cla.C_Name = "34班";
           cla.Count = 20;
           return cla;
    }
    //------------------同步调用对象-----------
    function Button5_onclick() {
        var res=WebUI._Default.getClass().value;
        alert("班级编号:"+res.C_Id+"名称:"+res.C_Name+"人数:"+res.Count);
    }
    //------------------异步调用对象-----------
    function Button6_onclick() {
        WebUI._Default.getClass(getClassCallBack);
    }
    function getClassCallBack(clas)
    {
        var res=clas.value;
        alert("班级编号:"+res.C_Id+"名称:"+res.C_Name+"人数:"+res.Count);
    }
    
    8.数据集的使用
     //方法
            [AjaxPro.AjaxMethod]
            public DataSet getInfo()
            {
                return WebUI.GetDataSet.getList();
            }
    
    //--------------------异步调用数据集--------------
    function Button8_onclick() {
        WebUI._Default.getInfo(getDataSetCallBack);
    }
    function getDataSetCallBack(res)
    {
        var dataset=res.value;
        var strHtml="";
        strHtml +=‘<table  style ="border-collapse:collapse ; border-color:Gray ;"  border="1px">‘;
        strHtml +=‘        <tr>‘;
        strHtml +=‘            <td>学生编号</td>‘;
        strHtml +=‘            <td>名称</td>‘;
        strHtml +=‘            <td>年龄</td>‘;
        strHtml +=‘        </tr>‘;
    
        for(var i=0;i<dataset.Tables[0].Rows.length;i++)
        {
            strHtml +=‘        <tr>‘;
            strHtml +=‘            <td>‘+ dataset.Tables[0].Rows[i].stu_id +‘</td>‘;
            strHtml +=‘            <td>‘+ dataset.Tables[0].Rows[i].stu_name +‘</td>‘;
            strHtml +=‘            <td>‘+ dataset.Tables[0].Rows[i].stu_age +‘</td>‘;
            strHtml +=‘        </tr>‘;
        }
        strHtml +=‘    </table>‘;
        thedata.innerHTML=strHtml;//thedata是一个<div id="thedata"></div>中的thedata
    }
    
    9.验证码的使用
    
    //----------------------验证码的使用(必须采用同步调用)----------------------
    
    //验证码的使用
    [AjaxPro.AjaxMethod]
    public bool ValidCodeData(string code)
    {
         return (HttpContext.Current.Session["CheckCode"].ToString()==code);
    }
    
    function Button9_onclick() {
        var code=document.getElementById("<%=TextBox2.ClientID %>").value;
        var bool=WebUI._Default.ValidCodeData(code).value;
        if(bool==true)
        {
            alert("ok");
        }else
        {
            alert("no");
        }
    }
    二,直接调用:
    javascript中:<%=后台方法%>
     function says()
        {
            alert("<%=Say()%>");
        }
        function del()
        {
             alert("<%=DeleteByID(8)%>");//DeleteByID(8)后台方法名
        }
    
    三,采用ICallbackEventHandler回调
    
    //必须声明System.Web.UI.ICallbackEventHandler接口
    public partial class _Default : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
    {
        //定义一个回调的返回值
        private string Result;
        //定义两个变量,用来接收页面传过来到操作数
        private string Num1;
        private string Num2;
        protected void Page_Load(object sender, EventArgs e)
        {
    
         }
    
        /// <summary>
        /// 该方法是回调执行的方法,根据参数在这个方法中处理回调的内容,该方法没有返回值
        /// </summary>
        /// <param name="eventArgument">此参数是从客户端传过来的</param>
        public void RaiseCallbackEvent(string eventArgument)
        {
            //eventArgumeng 为javascript从客户端传递的参数,本例传过来三个参数用“/”分割将每个参数取出存入数组
            string[] PagParams = eventArgument.Split(‘/‘);
             Num1 = PagParams[1];
             Num2 = PagParams[2];
            //根据第一个参数(所选的操作符),调用不同的执行函数
            switch (PagParams[0])
            {
                case "0":
                     Result = add(); break;
                case "1":
                     Result = sub(); break;
                case "2":
                     Result = multi(); break;
                case "3":
                     Result = division(); break;
             }
         }
    
        /// <summary>
        /// 该方法是返回回调的结果给客户端
        /// </summary>
        /// <returns></returns>
        public string GetCallbackResult()
        {
            return Result;
         }
    
        //一下四个函数是通过RaiseCallbackEvent方法,调用的回调要执行操作的函数
        private string add()
        {
            double addResult = double.Parse(Num1) + double.Parse(Num2);
            return addResult.ToString();
         }
    
        private string sub()
        {
            double addResult = double.Parse(Num1) - double.Parse(Num2);
            return addResult.ToString();
         }
    
        private string multi()
        {
            double addResult = double.Parse(Num1) * double.Parse(Num2);
            return addResult.ToString();
         }
    
        private string division()
        {
            double addresult = double.Parse(Num1) / double.Parse(Num2);
            return addresult.ToString();
         }
    }
    我的实现,前台一个textbox,一个普通button,单击按钮,将textbox中的值插入数据库 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>  <input id="Button1" type="button" value="点击我" onclick="test();" />   function test()    {       var names=document.getElementById("TextBox1").value;       var result= _Default.insert(names).value;       alert(result);    }后台 #region    [AjaxPro.AjaxMethod]
    
        public static string insert(string name)    {
    
            string flag = "提交失败";        SqlConnection conn = DbOpen.DbaseConfigConnect();        SqlCommand command = new SqlCommand();        command.Connection = conn;        string str = "update WBLXDJB set WXR=‘" + name + "‘ where BXBH=‘DIA201‘";        command.CommandText = str;        if (command.ExecuteNonQuery() == 1)            flag = "提交成功";        return flag;
    
        }    #endregion protected void Page_Load(object sender, EventArgs e)    {        AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));}记得引用AjaxPro.2.dllweb.config
    <httpHandlers>
        <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>        </httpHandlers>

C#前台js调用后台代码

前台js
<script type="text/javascript" language="javascript">
  function Ceshi()
  {
    var a = "<%=Getstr()%>";
    alert(a);
  }
</script>
<input type="button" value="http://www.2cto.com/kf/201104/js调用后台代码" /> 
后台代码
public string Getstr()
{
  string aa = "你们好啊!";
  return aa;
}

C#后台调用前台js代码

前台js
<script type="text/javascript" language="javascript">
  function Ceshi()
  {
    var a = "你们好啊!"
    alert(a);
  }
</script>
<asp:Button ID="Button1" runat="server" Text="后台调用js" 
onclick="Button1_Click" />
后台代码

protected void Button1_Click(object sender, EventArgs e)     {

    //如果有UpdatePanel就用如下代码调用前台js

    ScriptManager.RegisterStartupScript(UpdatePanel1,

this.Page.GetType(), "", "Ceshi();", true);

    //如果没有就如下代码

    this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "", "Ceshi();", true);

时间: 2024-10-10 04:36:07

js调用后台代码的几种方式的相关文章

asp.net调用前台js调用后台代码分享

C#前台js调用后台代码 前台js <script type="text/javascript" language="javascript"> function Ceshi() { var a = "<%=Getstr()%>"; alert(a); } </script> <input type="button" onclick="Ceshi();" value=

js 调用后台代码

JavaScript调用ASP.NET后台代码: 方法一:         1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为document.getElementById("btn1").click(); 3.在前台或后台调用js函数,激发click事件,等于访问后台c#函数: 方法二: 1.函数声明为public 后台代码(把public改成protected也可以) public string methodname()

js 调用后台代码(比较实用,好记)

JavaScript调用ASP.NET后台代码: 方法一:         1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为document.getElementById("btn1").click(); 3.在前台或后台调用js函数,激发click事件,等于访问后台c#函数: 方法二: 1.函数声明为public 后台代码(把public改成protected也可以) public string methodname()

C++调用C代码的两种方式

由于C++支持函数重载,在编译函数代码的时候会加上参数类型的信息,而C编译只有函数名信息,导致C++直接调用C代码在链接的时候会出现函数未定义的问题.解决这种问题有两种方法.方法一:在写C代码的时候考虑到C++可能会调用这些函数,增加extern "C":方法二:如果C++要调用的C代码没有考虑到这个问题,在包含c代码的时候加上extenrn"C"的标志.例如下面有个c文件cfile.h中定义了sumOfab(int a,int b),cfile.c中实现了这个函数

js调用后台方法的一种方法

前台js方法: <script language="javascript" type="text/javascript"> function search(typeStr, value,judge) { PageMethods.searchCondition(typeStr, value,judge, taskCompleted, taskFailed); } function taskCompleted(results, context, method

ASP.NET中JavaScript 调用后台代码

前序:在不需要右击页面或回发的情况下刷新页面,即JS调用后台代码: 方法一:调用隐藏服务端按钮的点击事件 1.在前端放一个隐藏按钮,将需要调用的后台代码写入OnClick事件中; 2.在前台写一个js函数,函数体为document.getElementById("<%=btnID.ClientID%>").click(); 3.在需要刷新的地方调用js函数,即可调用按钮OnClick事件: 4.此方法适用无返回值: 方法二:JS中直接用<%=MethodName()%

JavaScript学习12 JS中定义对象的几种方式【转】

avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript

JavaScript学习12 JS中定义对象的几种方式

JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript"> var object = new Object(); object.name

Android的WebView通过JS调用java代码

做项目时候会遇到我们用WebView 打开一个web,希望这个web可以调用自己的一些方法,比如我们在进一个web页面,然后当我们点击web上的某个按钮时,希望能判断当前手机端是否已经登录,如果未登录,那么就会跳转到登录页面(登陆页面是另一个Activity).这个时候,一个简单的做法就是在按钮动作事件的js上调用java的方法,从而起到判断是否登录,并决定是否跳转到另一个页面. Google的WebView为我们提供了 addJavascriptInterface(Object obj, St