jQuery中调用WebService方法小结


Posted in Javascript onMarch 28, 2011

个人感觉有两点是比较方便的:第一,在对WebService做ajax请求的时候,请求的url的写法是:服务地址/调用的方法名称,这样在请求的url中就确定了要调用的方法了,不必再在WebService代码中去判断ajax请求调用的是哪个方法了。第二,方法可以返回更多的数据类型,比如对象,泛型集合等;在ajax请求返回后,会自动将这些类型转换为json对象。而使用ashx的方式的话,需要先将这些类型转换为json格式的数据才能返回。

在使用jQuery调用WebService的方法的时候,只能发送post方式的请求;如果要返回json格式的数据的话,需要将contentType设置为application/json;返回的数据是以字母d为键值的json对象。
1.返回字符串类型

[WebMethod] 
public string HelloWorld() 
{ 
return "Hello World"; 
} $.ajax({ 
type: "post", 
contentType: "application/json", 
url: "UserService.asmx/HelloWorld", 
data: "{}", 
dataType: "json", 
success: function (result) { 
alert(result.d); 
} 
});

注意上面获取数据的方式:result.d,这是因为在返回的json数据格式是以d为键值的json对象。可以通过IE 9的开发人员工具,按下F12,选择网络,点击开始捕获按钮,重新刷新一下页面可以看到所有的请求列表,如下图所示:
jQuery中调用WebService方法小结
选择其中一个,点击转到详细视图,可以看到发送的请求以及响应的内容,如下图所示:
jQuery中调用WebService方法小结
根据这个相应正文的内容,我们可以看出为什么要使用result.d来获取返回的内容了。
2.返回对象类型
[WebMethod] 
public User GetUser() 
{ 
User user = new User() { Id = 1, UserName = "zhang san", Password = "123qwe" }; 
return user; 
} 
$.ajax({ 
type: "post", 
contentType: "application/json", 
url: "UserService.asmx/GetUser", 
data: "{}", 
dataType: "json", 
success: function (result) { 
alert(result.d.Id + " " + result.d.UserName); 
} 
});

3.返回泛型集合类型
[WebMethod] 
public List<User> GetUserList() 
{ 
List<User> list = new List<User>() 
{ 
new User{Id=1,UserName="zhang san",Password="asfasdf"}, 
new User{Id=2,UserName="li si",Password="3rwer"}, 
new User{Id=3,UserName="wang wu",Password="rqwe"} 
}; 
return list; 
} 
$.ajax({ 
type: "post", 
contentType: "application/json", 
url: "UserService.asmx/GetUserList", 
data: "{}", 
dataType: "json", 
success: function (result) { 
$.each(result.d, function (index, data) { 
alert(data.Id+" "+data.UserName); 
}); 
} 
});

对于泛型集合,对应的相应正文为:{"d":[{"__type":"WebServiceDemo.User","Id":1,"UserName":"zhang san","Password":"asfasdf"},{"__type":"WebServiceDemo.User","Id":2,"UserName":"li si","Password":"3rwer"},{"__type":"WebServiceDemo.User","Id":3,"UserName":"wang wu","Password":"rqwe"}]}。这时,result.d得到的是一个数组,通过each方法来遍历数组的每一项的属性值。
4.传递参数。在传递参数的时候,需要注意的是,ajax请求的参数的名称必须和WebService中的方法的名称一致,否则调用不能成功。
[WebMethod] 
public string Hello(string name) 
{ 
return "Hello " + name; 
} 
$.ajax({ 
type: "post", 
contentType: "application/json", 
url: "UserService.asmx/Hello", 
data: "{name:'admin'}", 
dataType: "json", 
success: function (result) { 
alert(result.d); 
} 
});
Javascript 相关文章推荐
替代window.event.srcElement效果的可兼容性的函数
Dec 18 Javascript
jQuery学习笔记之控制页面实现代码
Feb 27 Javascript
javascript模拟select,jselect的方法实现
Nov 08 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
Apr 15 Javascript
JavaScript获取XML数据附示例截图
Mar 05 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
Jul 07 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
Nov 02 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
Nov 07 Javascript
在vue中添加Echarts图表的基本使用教程
Nov 22 Javascript
JS基于递归实现网页版计算器的方法分析
Dec 20 Javascript
js循环map 获取所有的key和value的实现代码(json)
May 09 Javascript
使用jquery模拟a标签的click事件无法实现跳转的解决
Dec 04 jQuery
利用jQuery接受和处理xml数据的代码(.net)
Mar 28 #Javascript
jquery.combobox中文api和例子,修复了上面的小bug
Mar 28 #Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
Sep 12 #Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
Mar 28 #Javascript
jQuery autocomplate 自扩展插件、自动完成示例代码
Mar 28 #Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
Mar 28 #Javascript
基于jquery的获取浏览器窗口大小的代码
Mar 28 #Javascript
You might like
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
php中文本操作的类
2007/03/17 PHP
用PHP写的MySQL数据库用户认证系统代码
2007/03/22 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
PHP crc32()函数讲解
2019/02/14 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
JavaScript 学习笔记(五)
2009/12/31 Javascript
js 获取计算后的样式写法及注意事项
2013/02/25 Javascript
不使用ajax实现无刷新提交表单
2014/12/21 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
关于JavaScript作用域你想知道的一切
2016/02/04 Javascript
Node.js 数据加密传输浅析
2016/11/16 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
Vue2(三)实现子菜单展开收缩,带动画效果实现方法
2019/04/28 Javascript
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
详解python数据结构和算法
2019/04/18 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
Python如何合并多个字典或映射
2020/07/24 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
2020/11/29 Python
python调用jenkinsAPI构建jenkins,并传递参数的示例
2020/12/09 Python
微软开源最强Python自动化神器Playwright(不用写一行代码)
2021/01/05 Python
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
致跳远、跳高运动员广播稿
2014/01/09 职场文书
安全大检查反思材料
2014/01/31 职场文书
共青团员自我评价范文
2014/09/14 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
会议接待欢迎标语
2014/10/08 职场文书
活动费用申请报告
2015/05/15 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
单位接收证明格式
2015/06/18 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
浅谈Java实现分布式事务的三种方案
2021/06/11 Java/Android
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
Python中requests库的用法详解
2022/06/05 Python