多种方式实现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原型继承之基础机制分析
Aug 26 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 Javascript
将input file的选择的文件清空的两种解决方案
Oct 21 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
Nov 17 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
Nov 23 Javascript
实例分析js和C#中使用正则表达式匹配a标签
Nov 26 Javascript
使用js画图之画切线
Jan 12 Javascript
javascript实现详细时间提醒信息效果的方法
Mar 11 Javascript
js调出上下文菜单的实例
Dec 17 Javascript
深入理解Vue 的钩子函数
Sep 05 Javascript
浅谈layui 数据表格前后台传值的问题
Sep 12 Javascript
jQuery 动态粒子效果示例代码
Jul 07 jQuery
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数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
javascript事件模型代码
2007/07/01 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
2013/04/24 Javascript
Javascript中的包装类型介绍
2015/04/02 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
2016/05/25 Javascript
Angular的Bootstrap(引导)和Compiler(编译)机制
2016/06/20 Javascript
微信js-sdk界面操作接口用法示例
2016/10/12 Javascript
jQuery事件对象总结
2016/10/17 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
使用BootStrap实现悬浮窗口的效果
2016/12/13 Javascript
纯JS实现只能输入数字的简单代码
2017/06/21 Javascript
vue.js数据绑定的方法(单向、双向和一次性绑定)
2017/07/13 Javascript
vue实现密码显示隐藏切换功能
2018/02/23 Javascript
vue+element+Java实现批量删除功能
2019/04/08 Javascript
详解使用WebPack搭建React开发环境
2019/08/06 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
[02:32]DOTA2英雄基础教程 美杜莎
2014/01/07 DOTA
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
教你安装python Django(图文)
2013/11/04 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
django-filter和普通查询的例子
2019/08/12 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
Python编程快速上手——strip()函数的正则表达式实现方法分析
2020/02/29 Python
原装进口全世界:天猫国际
2016/08/03 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
营销总经理的岗位职责
2013/12/15 职场文书
《动手做做看》教学反思
2014/04/09 职场文书
汉语言文学专业求职信
2014/06/19 职场文书
收入证明申请书
2015/06/12 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
解决Python字典查找报Keyerror的问题
2021/05/26 Python