多种方式实现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读取中文COOKIE的解决办法
Feb 15 Javascript
jquery的ajax请求全面了解
Mar 20 Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
Jul 05 Javascript
js菜单点击显示或隐藏效果的简单实例
Jan 13 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
Jan 29 Javascript
js实现首屏延迟加载实现方法 js实现多屏单张图片延迟加载效果
Jul 17 Javascript
详解webpack提取第三方库的正确姿势
Dec 22 Javascript
微信小程序与公众号实现数据互通的方法
Jul 25 Javascript
非常漂亮的js烟花效果
Mar 10 Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 Javascript
node.js通过url读取文件
Oct 16 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
Oct 31 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中用文本文件做数据库的实现方法
2008/03/27 PHP
js option删除代码集合
2008/11/12 Javascript
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
两个比较有用的Javascript工具函数代码
2010/02/17 Javascript
js 去掉空格实例 Trim() LTrim() RTrim()
2014/01/07 Javascript
JS 弹出层 定位至屏幕居中示例
2014/05/21 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
jquery pagination插件动态分页实例(Bootstrap分页)
2016/12/23 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
js实现搜索提示框效果
2020/09/05 Javascript
[01:42]TI4西雅图DOTA2前线报道 第一顿早饭哦
2014/07/08 DOTA
Python中设置变量作为默认值时容易遇到的错误
2015/04/03 Python
pygame学习笔记(3):运动速率、时间、事件、文字
2015/04/15 Python
python中引用与复制用法实例分析
2015/06/04 Python
Python实现矩阵加法和乘法的方法分析
2017/12/19 Python
python实现学生管理系统
2018/01/11 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
2018/06/26 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
C#的几个面试问题
2016/05/22 面试题
英语专业个人求职自荐信
2013/09/21 职场文书
护理自荐信范文
2013/10/05 职场文书
医院标语大全
2014/06/23 职场文书
银行贷款委托书范本
2014/10/11 职场文书
民主生活会发言材料
2014/10/20 职场文书
党员廉洁自律个人总结
2015/02/13 职场文书
销售合作意向书范本
2015/05/08 职场文书
幼儿园班级工作总结2015
2015/05/25 职场文书
保护环境的宣传语
2015/07/13 职场文书
工程移交协议书
2016/03/24 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS