多种方式实现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模仿msgbox提示效果代码
Jun 10 Javascript
jQuery实现响应鼠标滚动的动感菜单效果
Sep 21 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
May 27 Javascript
jQuery生成假加载动画效果
Dec 01 Javascript
webuploader分片上传的实现代码(前后端分离)
Sep 10 Javascript
vuex的module模块用法示例
Nov 12 Javascript
vue实现固定位置显示功能
May 30 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
Oct 28 Javascript
如何通过javaScript去除字符串两端的空白字符
Feb 06 Javascript
JS实现图片懒加载(lazyload)过程详解
Apr 02 Javascript
微信小程序使用GoEasy实现websocket实时通讯
May 19 Javascript
Vue 使用typescript如何优雅的调用swagger API
Sep 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
使用Limit参数优化MySQL查询的方法
2008/11/12 PHP
重定向实现代码
2006/11/20 Javascript
JavaScript 变量作用域分析
2011/07/04 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
JavaScript prototype 使用介绍
2013/08/29 Javascript
JavaScript Ajax Json实现上下级下拉框联动效果实例代码
2013/11/23 Javascript
jQuery获取标签文本内容和html内容的方法
2015/03/27 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
js 将input框中的输入自动转化成半角大写(税号输入框)
2017/02/16 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
详解如何让Express支持async/await
2017/10/09 Javascript
总结js函数相关知识点
2018/02/27 Javascript
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
Python比较两个图片相似度的方法
2015/03/13 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
scrapy头部修改的方法详解
2020/12/06 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
python switch 实现多分支选择功能
2020/12/21 Python
Python结合百度语音识别实现实时翻译软件的实现
2021/01/18 Python
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
美国最受欢迎的度假目的地优惠套餐:BookVIP
2018/09/27 全球购物
Linux如何命名文件--使用文件名时应注意
2012/01/22 面试题
开办加工厂创业计划书
2014/01/03 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
旷课检讨书3000字
2014/02/04 职场文书
《中华少年》教学反思
2014/02/15 职场文书
简单租房协议书
2014/04/09 职场文书
县级文明单位申报材料
2014/05/23 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
会计主管岗位职责
2015/04/02 职场文书
2016年教师党员创先争优承诺书
2016/03/24 职场文书
用Python的绘图库(matplotlib)绘制小波能量谱
2021/04/17 Python
MySQL为id选择合适的数据类型
2021/06/07 MySQL
python3操作redis实现List列表实例
2021/08/04 Python