多种方式实现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 基础学习笔记之文档处理
May 29 Javascript
IE6下javasc#ipt:void(0) 无效的解决方法
Dec 23 Javascript
jQuery Validate初步体验(二)
Dec 12 Javascript
Javascript实现代码折叠功能
Aug 25 Javascript
JS实现图片预览的两种方式
Jun 27 Javascript
JavaScript学习笔记之惰性函数示例详解
Aug 27 Javascript
Vue v2.4中新增的$attrs及$listeners属性使用教程
Jan 08 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
利用JavaScript缓存远程窃取Wi-Fi密码的思路详解
Nov 05 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
May 23 Javascript
使用zrender.js绘制体温单效果
Oct 31 Javascript
Vue页面跳转传递参数及接收方式
Sep 09 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
php 上一篇,下一篇文章实现代码与原理说明
2010/05/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
2014/06/23 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
2014/02/23 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
js实现可输入可选择的select下拉框
2016/12/21 Javascript
JS如何判断浏览器类型和详细区分IE各版本浏览器
2017/03/04 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
vue项目打包后打开页面空白解决办法
2018/06/29 Javascript
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
python获取list下标及其值的简单方法
2016/09/12 Python
Python入门之三角函数tan()函数实例详解
2017/11/08 Python
python实现微信跳一跳辅助工具步骤详解
2018/01/04 Python
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
详解pyqt5 动画在QThread线程中无法运行问题
2018/05/05 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
Python数据可视化:箱线图多种库画法
2019/11/06 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
Java基础面试题
2014/07/19 面试题
三年级学生评语
2014/04/23 职场文书
超市开店计划书
2014/04/26 职场文书
建筑节能汇报材料
2014/08/22 职场文书
置业顾问岗位职责
2015/02/09 职场文书
项目负责人岗位职责
2015/02/15 职场文书
酒店人事主管岗位职责
2015/04/11 职场文书
冲出亚马逊观后感
2015/06/03 职场文书
教师工作证明范本
2015/06/12 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书