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下过滤数组重复值的代码
Sep 10 Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
Mar 28 Javascript
jquery特效 点击展示与隐藏全文
Dec 09 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
Nov 28 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
Feb 27 Javascript
vue的全局变量和全局拦截请求器的示例代码
Sep 13 Javascript
checkbox在vue中的用法小结
Nov 13 Javascript
js实现无缝轮播图效果
Mar 09 Javascript
基于vue+element实现全局loading过程详解
Jul 10 Javascript
小程序实现录音功能
Sep 22 Javascript
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
Apr 13 Javascript
浅谈克隆 JavaScript
Nov 02 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
2006/10/09 PHP
关于时间计算的结总
2006/12/06 PHP
PHP实现多条件查询实例代码
2010/07/17 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
php读取txt文件组成SQL并插入数据库的代码(原创自Zjmainstay)
2012/07/31 PHP
Destoon模板制作简明教程
2014/06/20 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
用javascript连接access数据库的方法
2006/11/17 Javascript
使用jQuery模板来展现json数据的代码
2010/10/22 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
在JavaScript应用中使用RequireJS来实现延迟加载
2015/07/01 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
详谈ES6中的迭代器(Iterator)和生成器(Generator)
2017/07/31 Javascript
利用babel将es6语法转es5的简单示例
2017/12/01 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
JS如何操作DOM基于表格动态展示数据
2020/10/15 Javascript
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
Django实现简单的分页功能
2021/02/22 Python
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
爱情检讨书大全
2014/01/21 职场文书
销售员个人求职的自我评价
2014/02/10 职场文书
计算机毕业生自荐信范文
2014/03/23 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
Redis命令处理过程源码解析
2022/02/12 Redis
如何利用golang运用mysql数据库
2022/03/13 Golang
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS