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 相关文章推荐
jQuery 1.3 和 Validation 验证插件1.5.1
Jul 09 Javascript
精通JavaScript 纠正 cleanWhitespace函数
Mar 11 Javascript
打豆豆小游戏 用javascript编写的[打豆豆]小游戏
Jan 08 Javascript
JS实现闪动的title消息提醒效果
Jun 20 Javascript
简单实现异步编程promise模式
Jul 31 Javascript
基于JS设计12306登录页面
Dec 28 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
Feb 10 Javascript
JavaScript切换搜索引擎的导航网页搜索框实例代码
Jun 11 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
vue项目打包部署到服务器的方法示例
Aug 27 Javascript
axios取消请求的实践记录分享
Sep 26 Javascript
使用NestJS开发Node.js应用的方法
Dec 03 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
用文本作数据处理
2006/10/09 PHP
PHP学习 运算符与运算符优先级
2008/06/15 PHP
一步一步学习PHP(8) php 数组
2010/03/05 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
php自动载入类用法实例分析
2016/06/24 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
jquery的选择器的使用技巧之如何选择input框
2013/09/22 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
JS实现超精简响应鼠标显示二级菜单代码
2015/09/12 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
Javascript小技能总结(推荐)
2016/06/02 Javascript
vuex操作state对象的实例代码
2018/04/25 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
Vue常用API、高级API的相关总结
2021/02/02 Vue.js
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
Python合并多个装饰器小技巧
2015/04/28 Python
Windows平台Python连接sqlite3数据库的方法分析
2017/07/12 Python
python实现用户答题功能
2018/01/17 Python
Python多进程原理与用法分析
2018/08/21 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
使用python实现unix2dos和dos2unix命令的例子
2019/08/13 Python
Django项目之Elasticsearch搜索引擎的实例
2019/08/21 Python
python3.8与pyinstaller冲突问题的快速解决方法
2020/01/16 Python
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
德国香水、化妆品和护理产品网上商店:Parfumdreams
2018/09/26 全球购物
2014迎新年晚会策划方案
2014/02/23 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
党的群众路线教育实践活动通讯稿
2014/09/10 职场文书
违纪检讨书范文
2015/01/27 职场文书
2016大学优秀学生干部事迹材料
2016/03/01 职场文书
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android