js调用后台方法与后台调用js方法
- 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()
{
//……比如计算某值
} JS调用后台带参数的方法
对于前台调用后台的方法,我们想到最多的就是用AJAX,这个是毋庸置疑的, 我就不再这里多说了。我今天主要想说的是用JS调用后台的方法。
对于后台往前台传值,用这种<%= nameValue%> 方法,我们是在熟悉不过了,由此,我们是否可以用同样的办法达到传值方法返回值的效果呢?
我在这个项目中最先想到的就是尝试这种(因为这个项目用到了VML,用AJAX以前是不行,不过,后来测试还是没有问题,不过,需要把xmlns=http://www.w3.org/1999/xhtml给保留住)方法,结果是可行的。但是由于需要前台在调用后台的方法时,需要先给其传参数,这个遇到
了一些麻烦,去网上看了一些解决方案,都是把字符串作为参数传递,而更多的网友是想知道如何传递变量的,呵呵,偶也是其中一个,因为这个变量
的值是不确定的嘛!后台,得到一名叫“刚刚”的网友帮助,问题解决。现在把方法告知大家,以免在开发的过程中走同样的弯路。
后台方法:- protected string CsharpVoid(string strCC)
{
strCC = "你好!" + strCC;
return strCC;
}前台JS - function Init()
{
var v = "中国";
var s = '<%=CsharpVoid("'+v+'") %>';
alert(s);
}
这样就OK了 简单介绍下它的用法: 一.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="点击我" οnclick="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"
οnclick="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);
js调用后台方法与后台调用js方法相关推荐
- c#调用js脚本报错_C#后台调用前台JS函数方法
总结了公司其他人的一些C#后台调用前台的方法: 方法一: 假设前台页面的JS脚本标签中有如下函数: function A() { alert("hello word!"); } 那 ...
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...
- java swing调用H5_atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97...
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1.实现html5化界面的要解决的策略 1.1.Js交互 Firefox与Chro ...
- java按钮调用 后台方法_onclick怎么调用后台中的一个方法
javaScript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为document.getEle ...
- ajax返回实体类字符串,js使用ajax传值给后台,后台返回字符串处理方法
之前使用js获取后台生成的JSON字符串,然后给select填充值,这次需要重新获取一次. 这里的目标是,在一个input输入框里,输入一个用户名,判断是否为空,是否不存在,如果存在返回几个字段给前台 ...
- [转]JS调用Android里面的方法,Android调用JS里面的方法
FROM : http://blog.csdn.net/hj563308597/article/details/45197709 Android WebView 在公司Android的开发过程中遇到一 ...
- php编写用户登录页面,js+php实现静态页面实时调用用户登陆状态的方法
这篇文章主要介绍了js+php实现静态页面实时调用用户登陆状态的方法,采用在静态页面中使用js调用php页面从而实现用户登录状态的实时调用功能,需要的朋友可以参考下 本文实例讲述了js+php实现静态 ...
- js 函数闭包内部返回函数体调用方法难点解答
今天在网上,看到一篇关于js函数难点的文章,js函数的一些难点.在那上面提了一下,关于js函数返回另一个函数的问题,并附上了一道面试题: var add = function(x){ var sum ...
- .php中js写法,js函数常见的写法以及调用方法
写在前面:本文详细的介绍了5中js函数常见的写法以及调用的方法,平时看别人代码的时候总是看到各种不同风格的js函数的写法.不明不白的,找了点资料,做了个总结,需要的小伙伴可以看看,做个参考. 1.常规 ...
最新文章
- python二分查找
- hadoop数据流转过程分析
- 怎样用c语言写一个系统,用C语言写关于操作系统的一个问题。
- extjs 中iframe内存泄漏的问题
- 360企业版终端安装说明
- Bootstrap页面布局13 - BS按钮
- 【Matlab】求解黎卡提 Riccati 方程 李雅普诺夫 Lyapunov 方程
- jenkins blue ocean 与 pipeline
- 根据 dba_errors 制定 数据库报警邮件
- Spring Boot定时任务-cron表达式
- [Usaco2010 Nov]Visiting Cows
- lombok原理_听说学会用 Lombok 就可以让你早点下班?(你还不看)
- 顺序线性表的基本操作(C语言实现)
- jQuery EasyUI 数据网格
- mac 环境 Android Studio升级后Gradle project Sync Failed解决方法
- FortiGate常用命令
- python-pygame作品之MineCraft小鸡
- 常用英雄胜率怎么刷_王者荣耀怎么刷英雄胜率和场次胜率方法解析
- Kronecker积
- 椭圆型变分问题理论及数值方法
热门文章
- ARM64-PWN笔记01
- 【排序算法全解】之 - 插入排序(InsertSort)
- 高被引论文有什么特征?
- 【DBAplus】SQL优化:一篇文章说清楚Oracle Hint的正确使用姿势
- 关于Android2.2定制出厂默认输入法的一些心得
- oracle闪回某个时间点的数据库,Oracle 闪回总结
- 2020年计算机组装行业,2020年办公电脑什么配置合适 2020组装机电脑配置单推荐...
- 斐讯n1安装centos7+docker openwrt
- vue配合html中实现四舍五入数值后保留原始数值的方法
- [字符编码] 理论篇:常见字符集与编码方式