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 相关文章推荐
点击广告后才能获得下载地址
Oct 26 Javascript
让IE8支持DOM 2(不用框架!)
Dec 31 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
Jun 18 Javascript
JScript分割字符串示例代码
Sep 04 Javascript
JS实现兼容性好,带缓冲的动感网页右键菜单效果
Sep 18 Javascript
Jquery 垂直多级手风琴菜单附源码下载
Nov 17 Javascript
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
Vue中添加手机验证码组件功能操作方法
Dec 07 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
Mar 27 Javascript
vue.js表单验证插件(vee-validate)的使用教程详解
May 23 Javascript
微信小程序全局变量的设置、使用、修改过程解析
Sep 24 Javascript
利用js实现简单开关灯代码
Nov 23 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和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
高效的获取当前元素是父元素的第几个子元素
2013/10/15 Javascript
调试代码导致IE出错的避免方法
2014/04/04 Javascript
jQuery filter函数使用方法
2014/05/19 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
JS中使用 after 伪类清除浮动实例
2017/03/01 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
微信小程序开发之左右分栏效果的实例代码
2019/05/20 Javascript
javascript实现多边形碰撞检测
2020/10/24 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
python opencv之SIFT算法示例
2018/02/24 Python
python numpy和list查询其中某个数的个数及定位方法
2018/06/27 Python
通过python顺序修改文件名字的方法
2018/07/11 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
运用Python的webbrowser实现定时打开特定网页
2019/02/21 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
英国时尚服饰电商:Boohoo
2017/10/12 全球购物
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
Zavvi荷兰:英国大型音像制品和图书游戏零售商
2018/03/22 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
工程管理英文求职信
2014/03/18 职场文书
教师四风问题整改措施
2014/09/25 职场文书
中学生自我评价范文
2015/03/03 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS