多种方式实现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检查日期格式的函数[比较全]
Oct 17 Javascript
javascript类继承机制的原理分析
Sep 12 Javascript
js图片延迟加载的实现方法及思路
Jul 22 Javascript
js将字符串转成正则表达式的实现方法
Nov 13 Javascript
js中小数转换整数的方法
Jan 26 Javascript
详解addEventListener的三个参数之useCapture
Mar 16 Javascript
jquery实现输入框实时输入触发事件代码
Dec 21 Javascript
jQuery实现鼠标移入显示蒙版效果
Jan 11 jQuery
JS 图片压缩原理与实现方法详解
Apr 29 Javascript
基于JS实现table导出Excel并保留样式
May 19 Javascript
抖音短视频(douyin)去水印工具的实现代码
Mar 30 Javascript
vue组件的路由高亮问题解决方法
May 11 Vue.js
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/10/09 PHP
php输出xml格式字符串(用的这个)
2012/07/12 PHP
Codeigniter发送邮件的方法
2015/03/19 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
tp5 sum某个字段相加得到总数的例子
2019/10/18 PHP
JQuery 写的个性导航菜单
2009/12/24 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
js单词形式的运算符
2014/05/06 Javascript
Angularjs编写KindEditor,UEidtor,jQuery指令
2015/01/28 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
微信jssdk在iframe页面失效问题的解决措施
2016/03/03 Javascript
Node.js测试中的Mock文件系统详解
2016/11/21 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
jquery仿苹果的时间/日期选择效果
2017/03/08 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
JavaScript展开操作符(Spread operator)详解
2019/07/20 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
Python使用回溯法子集树模板解决迷宫问题示例
2017/09/01 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
利用Python实现kNN算法的代码
2019/08/16 Python
Python Celery多队列配置代码实例
2019/11/22 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
DJI全球:DJI Global
2021/03/15 全球购物
工程资料员岗位职责
2014/03/10 职场文书
老公保证书范文
2014/04/29 职场文书
法制宣传口号
2014/06/16 职场文书
课外活动总结范文
2014/07/09 职场文书
关于感恩的作文
2019/08/26 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
Python+tkinter实现高清图片保存
2022/03/13 Python
使用Bandicam录制鼠标指针并附带点击声音,还可以添加点击动画效果
2022/04/11 数码科技
mysql通过group by分组取最大时间对应数据的两种有效方法
2022/09/23 MySQL