多种方式实现JS调用后台方法进行数据交互


Posted in Javascript onAugust 20, 2013

项目开发过程中很多地方都需要前端和后台的数据交互,几种典型常用的方法如利用控件的AutopostBack属性、Button提交表单等等。但这些都是有条件的,AutoPostBack具有实时性但会刷新页面,Button提交表单不能实现数据交互的实时性。当然说到前台与后台的数据交互更不能漏掉ajax,ajax实现前台与后台数据的异步交互,并且保证实时的、局部刷新。但有些数据不需要异步交互,例如当交互的数据是下一步执行的条件时,就必须要等到数据前台与后台数据交互完成后才能继续执行程序。所以对于掌握js与后台数据交互的方法还是很有必要的。

方法一

后台方法:

<SPAN style="COLOR: #ff0000">// 需要标识为WebMethod</SPAN> 
[System.Web.Services.WebMethod] 
<SPAN style="COLOR: #ff0000">// 注意,要让前台调用的方法,一定要是public和static的</SPAN> 
public static string Say(string name) 
{ 
string result = "Hello:" + name; 
return result; 
}

前台js:
<script type="text/javascript"> 
function btnClick(){ 
PageMethods.Say("you",funReady,funError);<SPAN style="COLOR: #ff6666">//注意js中调用后台方法的方式</SPAN> 
} 
<SPAN style="COLOR: #ff0000">//回调函数, result 就是后台方法返回的数据</SPAN> 
function funReady(result){ 
alert(result); 
} 
<SPAN style="COLOR: #ff0000">//错误处理函数,err 就是后台方法返回的错误信息</SPAN> 
function funError(err){ 
alert("Error:" + err._message ); 
} 
</script> 
<asp:ScriptManagerID="ScriptManager1" runat="server"EnablePageMethods="true" /> 
<inputtype="button" onclick="btnClick()" value="test"/>

方法二

后台方法:

protected string Say(string strCC) 
{ 
strCC = "你好!" + strCC; 
return strCC; 
}

前台js:
function Show() 
{ 
var v = "中国"; 
var s = '<%=Say("'+v+'") %>'; // 你好!“+V+” 
alert(s); 
}<P style="MARGIN: 0in; FONT-FAMILY: Arial; COLOR: #666666; FONT-SIZE: 9pt"><input type="button" onclick="Show()" value="提交" /></P>

方法三

后台方法:

<SPAN style="COLOR: #666666">// 需要标识为WebMethod 
[System.Web.Services.WebMethod] 
// </SPAN><SPAN style="COLOR: #ff0000">注意,要让前台调用的方法,一定要是public和static的</SPAN><SPAN style="COLOR: #666666"> 
public static string Say(string name) 
{ 
string result = "Hello:" + name; 
return result; 
} 
</SPAN>

前台js:
<SPAN style="COLOR: #666666"><script type="text/javascript"> 
function btnClick(){ 
// </SPAN><SPAN style="COLOR: #ff0000">调用页面后台方法,前面跟方法所需的参数,接着是方法回调成功时要执行的js函数,最后一个是方法回调失败时要执行的js函数</SPAN><SPAN style="COLOR: #666666"> 
WebSerCustomer.Say("you",function(ress){//ress就是后台方法返回的数据,Say是webservice WebSerCustomer.axms页面上的方法 
alert(ress) 
}); 
} 
</script> 
<asp:ScriptManager ID="ScriptManager1" runat="server"> 
<Services><asp:ServiceReference Path="~/WebSerCustomer.asmx" /></Services>//WebSerCustomer.asmx后台webservice类的页名称 
</asp:ScriptManager> <input type="button" onclick="btnClick()" value="test" /></SPAN>

总结
对于方法一和方法三来说,标识System.web.Services.webmethod可以声明一个方法可以通过客户端js函数来调用,并且后台方法必须声明为public和static,正是由于要将方法声明为static,使得这两种方法都有局限性,即静态方法中只允许访问静态成员变量。所以要想用这两种方式调用后台方法,后台方法中是不能访问非静态成员变量的。

对于方法二来说,虽然后台方法没有任何限制,但是前台调用的时候由于<%=%>是只读的,前台向后台传的参数实际上是不存在的,即从后台中拿不到。所以方法二适合于调用后台方法经过处理并返回给客户端使用,不适合于将数据传到后台供后台使用。

Javascript 相关文章推荐
打造基于jQuery的高性能TreeView(asp.net)
Feb 23 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
Feb 17 Javascript
JSON.stringify转换JSON时日期时间不准确的解决方法
Aug 08 Javascript
javascript使用prototype完成单继承
Dec 24 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
Mar 25 Javascript
JS提交form表单实例分析
Dec 10 Javascript
JS表格组件神器bootstrap table详解(强化版)
May 26 Javascript
JS图片左右无缝隙滚动的实现(兼容IE,Firefox 遵循W3C标准)
Sep 23 Javascript
微信小程序block的使用教程
Apr 01 Javascript
AngularJS 监听变量变化的实现方法
Oct 09 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
Jan 10 Javascript
JavaScript获取当前url路径过程解析
Dec 27 Javascript
js获取指定日期前后的日期代码
Aug 20 #Javascript
js 自定义个性下拉选择框示例
Aug 20 #Javascript
JavaScript打印iframe内容示例代码
Aug 20 #Javascript
JQuery之focus函数使用介绍
Aug 20 #Javascript
html页面显示年月日时分秒和星期几的两种方式
Aug 20 #Javascript
网页中可关闭的漂浮窗口实现可自行调节
Aug 20 #Javascript
js判断选择的时间是否大于今天的代码
Aug 20 #Javascript
You might like
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
PHP4之真OO
2006/10/09 PHP
Laravel执行migrate命令提示:No such file or directory的解决方法
2016/03/16 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
深入解读JavaScript中的Iterator和for-of循环
2015/07/28 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
理解javascript正则表达式
2016/03/08 Javascript
jQuery的内容过滤选择器学习教程
2016/04/18 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
完美实现js选项卡切换效果(一)
2017/03/08 Javascript
Angularjs 与 bower安装和使用详解
2017/05/11 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
Vue组件通信实践记录(推荐)
2017/08/15 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
浅谈Vue.use到底是什么鬼
2020/01/21 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python中scatter函数参数及用法详解
2017/11/08 Python
Python的log日志功能及设置方法
2019/07/11 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
如何利用python生成MD5并去重
2020/12/07 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
编程用JAVA解析XML的方式
2013/07/07 面试题
毕业生个人的求职信范文
2013/12/03 职场文书
党支部公开承诺书
2014/03/28 职场文书
法定代表人授权委托书
2014/09/19 职场文书
倡议书的格式写法
2015/04/28 职场文书
赢在中国观后感
2015/06/02 职场文书
教师节表彰会主持词
2015/07/06 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
十大动画制作软件,Adobe产品上榜两款,第一是行业标准软件
2022/03/18 杂记
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis