SPServices介绍之三:使用SPSerivces对象调用Web Service
来源:互联网 发布:设计签名的软件 编辑:程序博客网 时间:2024/06/05 07:21
先看一下语法:
$().SPServices({operation: "operationname",[webURL: "/sitepath",][option1: value1,][option2: value2,][async: false,]completefunc: function (xData, Status) {...do stuff...}});
其中:
operation用来指定Web Service 方法的名字,例如最常用的Lists Web Services中的GetListItems方法,用来获取列表中的items。
webURL用来指定Ajax请求使用的url,默认是当前站点的url。
options(options1,options2等等)用来指定Web Servcie调用需要的参数,不同的Web Service有不同的参数,例如GetListItems服务,需要指定listName,viewName等等。
async用来指定Web Service的调用方式是异步还是同步的,默认Ajax的调用都是异步的,如果需要可以使用async: false来强制使用同步的方式调用Web Service
completefunc用来指定Web Service调用成功的回调函数。
举一个简单的例子,使用SPServices调用GetListItems方法:
$().SPServices({ operation: "GetListItems", webURL:"/", listName: "Tasks", async: false, completefunc: function (xData, Status) { if (Status == 'success') { alert(xData.responseText); } } });在我的环境中,运行以上代码的结果如下图所示。(Tasks列表中只有一条数据)
可以看到我们用了非常少的代码,就完成了对GetListItems方法的调用,并且可以在completefunc方法中处理返回结果。调用Web Service返回的xml数据被保存在xData.responseXML属性中,在SPSerives库中,提供了两个很好用的方法,来处理xml数据。
一个是用来解析xml数据的SPFilterNode
语法是:
$(xData.responseXML).SPFilterNode(somenode)可以使用这个方法分析GetListItems方法返回的xml数据,如下所示:
$().SPServices({ operation: "GetListItems", webURL:"/", listName: "Tasks", async: false, completefunc: function (xData, Status) { if (Status == 'success') { $(xData.responseXML).SPFilterNode("z:row").each(function (index, item) { alert(index); alert(item); }); } } });这里使用SPFilterNode方法遍历每个z:row节点。
另一个方法是将xml数据转换为Json对象的SPXmlToJson
语法是:
$(xData.responseXML).SPFilterNode("z:row").SPXmlToJson({ mapping: {}, includeAllAttrs: false, //是否包含z:row节点中的所有属性 removeOws: true, //是否需要移除Ows_前缀 sparse: false //如果是true,将不返回空的属性值<span style="font-family: Arial, Helvetica, sans-serif;">("")</span>});
这里需要说明的是mapping参数,这个属性允许你指定xml节点的属性和Json对象属性之间的匹配规则,例如你希望ows_Title这个z:row节点的属性,在Json对象中的名字是“NewTitle”,类型是string类型的,那么可以添加这样一个mapping:
ows_Title: {mappedName: "NewTitle", objectType: "Text"}其中mappedName指定了Json对象中的名字,objectType指定了转换之后的JS对象。SharePoint Field对象和JS对象的对应转换关系如下:
举例说明:
$().SPServices({ operation: "GetListItems", webURL:"/", listName: "Tasks", async: false, completefunc: function (xData, Status) { if (Status == 'success') { var myJson = $(xData.responseXML).SPFilterNode("z:row").SPXmlToJson({ mapping: { ows_ID: { mappedName: "ID", objectType: "Counter" }, ows_Title: { mappedName: "NewTitle", objectType: "Text" }, ows_Created: { mappedName: "Created", objectType: "DateTime" }, }, includeAllAttrs: true, removeOws: false }); alert(myJson); alert(myJson[0].ID); alert(myJson[0].NewTitle); alert(myJson[0].Created); } } });运行之后myJson对象的结构是这样的:
可以看到ows_ID已经map到ID这个属性上了,同样ows_Title也map到NewTitle这个属性上了,同样还有ows_Created,map到了Created属性。
除了以上的两个方法之外,SPServices还提供了一个更加方面的方法:SPGetListItemsJson
这个方法调用GetListItems这个Web Service方法,直接返回一个Json对象,非常方便使用,更省去了mapping的麻烦。
语法:
$().SPServices.SPGetListItemsJson({ webURL: "", listName: "", CAMLViewName: "", CAMLQuery: "", CAMLViewFields: "", CAMLRowLimit: "", CAMLQueryOptions: "", changeToken: "", contains: "", mapping: null, mappingOverrides: null, debug: false});
这个就不举例子了。
除了以上作为例子的GetListItems方法之外,SPService库还可以支持很多的Web Service调用,具体有哪些请参考:点击打开链接
下一章SPServices介绍之四中介绍如何使用SPServices简单的实现下拉菜单的级联效果。
- SPServices介绍之三:使用SPSerivces对象调用Web Service
- SPServices介绍之二:基本方法调用
- SPServices介绍之五:调用Workflow
- SPServices介绍之六:上传附件
- SPServices介绍之七:智能提示内容
- Web Service之介绍
- android之Service介绍之三 AIDL与传递对象
- android之Service介绍之三 AIDL与传递对象
- android之Service介绍之三 AIDL与传递对象
- android之Service介绍之三 AIDL与传递对象
- android之Service介绍之三 AIDL与传递对象
- 使用Web Service 调用Web Service
- SPServices 使用示例
- 使用java调用Web-Service
- 使用Axis2调用Web Service
- 使用PHP调用Web service
- 使用Python调用Web Service
- 使用Java调用Web Service
- Android学习笔记之Service
- Linux学习笔记——如何在交叉编译时使用共享库
- 第一章 绪论 作业
- 根据经纬度获取城市信息(谷歌地图api)
- 励志,人生的方向
- SPServices介绍之三:使用SPSerivces对象调用Web Service
- RHCE6 Preperation (4) - user/group, kernel install, ip_forward, printer, crontab
- POJ 2393 Yogurt factory(贪心)
- 什么是Javascript跨域
- SetROP2
- 中间表续
- 人生歧途杂谈第一部
- 全局变量在头文件中“定义”
- C++中虚析构函数的作用