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 相关文章推荐
javascript贪吃蛇完整版(源码)
Dec 09 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
Mar 16 Javascript
jquery图片轮播插件仿支付宝2013版全屏图片幻灯片
Apr 03 Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 Javascript
jquery实现拖拽调整Div大小
Jan 30 Javascript
js+css实现回到顶部按钮(back to top)
Mar 02 Javascript
js实现div模拟模态对话框展现URL内容
May 27 Javascript
简单实现JS计算器功能
Dec 21 Javascript
vue2.0实现导航菜单切换效果
May 08 Javascript
基于vue2实现上拉加载功能
Nov 28 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
Mar 01 Javascript
使用Vue CLI创建typescript项目的方法
Aug 09 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中var_export与var_dump的区别分析
2010/08/21 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
php实现通过ftp上传文件
2015/06/19 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
YII框架关联查询操作示例
2019/04/29 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
node.js中的fs.fchownSync方法使用说明
2014/12/16 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
Vue.js实现在下拉列表区域外点击即可关闭下拉列表的功能(自定义下拉列表)
2017/05/30 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
Vue.set() this.$set()引发的视图更新思考及注意事项
2018/08/30 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
python中偏函数partial用法实例分析
2015/07/08 Python
解决python线程卡死的问题
2019/02/18 Python
Python中按值来获取指定的键
2019/03/04 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
python线程的几种创建方式详解
2019/08/29 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
tensorflow 保存模型和取出中间权重例子
2020/01/24 Python
python Shapely使用指南详解
2020/02/18 Python
HTML5等待加载动画效果
2017/07/27 HTML / CSS
HTML5 WebSocket实现点对点聊天的示例代码
2018/01/31 HTML / CSS
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
环境科学专业优秀毕业生自荐书
2014/02/03 职场文书
建设投标担保书
2014/05/13 职场文书
超市开业庆典活动策划方案
2014/09/15 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
2014年房地产个人工作总结
2014/12/20 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书