多种方式实现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 相关文章推荐
JavaScript之自定义类型
May 04 Javascript
js防止页面被iframe调用的方法
Oct 30 Javascript
node.js中的http.response.writeHead方法使用说明
Dec 14 Javascript
使用JS获取当前地理位置方法汇总
Dec 18 Javascript
解决bootstrap中modal遇到Esc键无法关闭页面
Mar 09 Javascript
BootStrap中Tab页签切换实例代码
May 30 Javascript
基于dataset的使用和图片延时加载的实现方法
Dec 11 Javascript
详解如何实现一个简单的 vuex
Feb 10 Javascript
Vue导出页面为PDF格式的实现思路
Jul 31 Javascript
vue集成kindeditor富文本的实现示例代码
Jun 07 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
Aug 07 Javascript
uniapp微信小程序实现一个页面多个倒计时
Nov 01 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
真正根据utf8编码的规律来进行截取字符串的函数(utf8版sub_str )
2012/10/24 PHP
php生成图形(Libchart)实例
2013/11/06 PHP
功能强大的php文件上传类
2016/08/29 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
jQuery chili图片远处放大插件
2009/11/30 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
jQuery.extend 函数的详细用法
2012/06/27 Javascript
浅谈JavaScript Array对象
2014/12/29 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
AngularJS 服务详细讲解及示例代码
2016/08/17 Javascript
JS自定义混合Mixin函数示例
2016/11/26 Javascript
Angular实现的内置过滤器orderBy排序与模糊查询功能示例
2017/12/29 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
jQuery动态生成的元素绑定事件操作实例分析
2019/05/04 jQuery
vuex实现购物车的增加减少移除
2020/06/28 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
Python六大开源框架对比
2015/10/19 Python
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
常用python编程模板汇总
2016/02/12 Python
Python3实现的字典、列表和json对象互转功能示例
2018/05/22 Python
实践Vim配置python开发环境
2018/07/02 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
Python+opencv+pyaudio实现带声音屏幕录制
2019/12/23 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
青年创业培训欢迎词
2014/01/08 职场文书
投标单位介绍信
2014/01/09 职场文书
主题党日活动总结
2014/07/08 职场文书
个人合伙协议书范本
2014/10/14 职场文书
依法行政工作汇报
2014/10/28 职场文书
教师个人成长总结
2015/02/11 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
银行催款通知书
2015/04/17 职场文书
音乐之声观后感
2015/06/04 职场文书
Python实现排序方法常见的四种
2021/07/15 Python