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 相关文章推荐
关于viewport,Ext.panel和Ext.form.panel的关系
May 07 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
Nov 05 Javascript
JS自定义混合Mixin函数示例
Nov 26 Javascript
ECMAScript6 新特性范例大全
Mar 24 Javascript
AngularJS学习笔记之表单验证功能实例详解
Jul 06 Javascript
JavaScript实现打印星型金字塔功能实例分析
Sep 27 Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 Javascript
JS实现移动端点击按钮复制文本内容
Jul 28 Javascript
VUE组件中的 Drawer 抽屉实现代码
Aug 06 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
Apr 09 Javascript
JavaScript直接调用函数与call调用的区别实例分析
May 22 Javascript
如何在微信小程序中使用骨架屏的步骤
Jun 12 Javascript
利用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
PHP COOKIE及时生效的方法介绍
2014/02/14 PHP
php截取字符串函数分享
2015/02/02 PHP
初识laravel5
2015/03/02 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
javascript网页关键字高亮代码
2008/07/30 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型
2012/02/27 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
用Vue-cli搭建的项目中引入css报错的原因分析
2017/07/20 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
深入理解Node module模块
2018/03/26 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
vue+springboot+element+vue-resource实现文件上传教程
2020/10/21 Javascript
JavaScript实现轮播图效果
2020/10/30 Javascript
Vue看了就会的8个小技巧
2021/01/21 Vue.js
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python的Template使用指南
2014/09/11 Python
简单理解Python中的装饰器
2015/07/31 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
Python函数式编程指南:对生成器全面讲解
2019/11/19 Python
数学专业毕业生自荐信
2013/11/10 职场文书
社区优秀志愿者材料
2014/02/02 职场文书
护士上岗前培训自我鉴定
2014/04/20 职场文书
骨干教师培训方案
2014/05/06 职场文书
搞笑的获奖感言
2014/08/16 职场文书
自荐信模板大全
2015/03/27 职场文书
高中团支书竞选稿
2015/11/21 职场文书
Pytorch distributed 多卡并行载入模型操作
2021/06/05 Python