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 相关文章推荐
基于jquery1.4.2的仿flash超炫焦点图播放效果
Apr 20 Javascript
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
Jun 22 Javascript
AngularJS中的过滤器使用详解
Jun 16 Javascript
AngularJS变量及过滤器Filter用法分析
Nov 22 Javascript
MUI 解决动态列表页图片懒加载再次加载不成功的bug问题
Apr 13 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
基于vue实现分页效果
Nov 06 Javascript
webpack+vuex+axios 跨域请求数据的示例代码
Mar 06 Javascript
JS实现的DOM插入节点操作示例
Apr 04 Javascript
Js中将Long转换成日期格式的实现方法
Jun 05 Javascript
你不知道的SpringBoot与Vue部署解决方案
Nov 09 Javascript
vue-quill-editor插入图片路径太长问题解决方法
Jan 08 Vue.js
利用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
如何删除多级目录
2006/10/09 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
基于PHP 面向对象之成员方法详解
2013/05/04 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
Javascript中拼接大量字符串的方法
2015/02/05 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
javascript 中设置window.location.href跳转无效问题解决办法
2017/02/09 Javascript
Node.js 使用命令行工具检查更新
2017/06/08 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
Bootstrap模态对话框用法简单示例
2018/08/31 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
nodejs制作小爬虫功能示例
2020/02/24 NodeJs
vue插槽slot的简单理解与用法实例分析
2020/03/14 Javascript
python刷投票的脚本实现代码
2014/11/08 Python
Python魔术方法详解
2015/02/14 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
使用pyqt5 tablewidget 单元格设置正则表达式
2019/12/13 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
python根据字典的键来删除元素的方法
2020/08/16 Python
详解python对象之间的交互
2020/09/29 Python
分享8款纯CSS3实现的搜索框功能
2017/09/14 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
店长岗位职责
2013/11/21 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
主持人开场白台词
2015/05/29 职场文书
索尼ICF-5900W收音机测评
2022/04/24 无线电
JS实现九宫格拼图游戏
2022/06/28 Javascript