在Javascript中调用WSS

简介:

前段时间做一个MOSS的项目,boss要求在一个List Item新建的页面上增加用户身份验证,符合条件的用户可以进入,不符合条件的用户转到Accessdenied页面。因为整个项目建立在MOSS平台上,并且客户不允许在服务器上部署dll,所以不能写C#代码,所有的前台展示都需要在脚本中来完成(真是变态啊)。

    好在WSS给我们提供了内容丰富的WebService,我们只需要通过js去调用就行了,这跟使用Ajax基本没什么区别。虽然需求很简单,通过js调用Lists.GetListItems()方法,查找User Information List中的用户,然后再加一些判断就可以了,但是我想到在js中调用WSS提供的方法也是一个会经常使用到的东西,所以在这里整理了一下代码,也作为一个js调用WSS的通用代码,以后直接拿过来用就可以了。

    首先是核心部分,这跟Ajax的核心代码基本相同,都是先构造一个XMLHttpRequest或者ActiveXObject对象,然后就是XML的发送和接收。

ContractedBlock.gif SPAPI_Core

    然后就是写WSS中各个方法的调用接口。WSS中提供的方法特别多,这里只列出了常用的一部分,以后遇到其它的可以类似再添加。

Lists类下的所有方法

ContractedBlock.gif SPAPI_Lists

UserGroup类下的部分常用方法

ContractedBlock.gif SPAPI_UserGroup
    顺便给出一个调用的例子:
复制代码
 1  var  rootUrl  =  window.location.protocol  +   " // "   +  window.location.host;
 2  var  contractId  =  getUrlParam( " ID " );
 3  var  contractName  =  getContractNameById(rootUrl, contractId);
 4  alert(contractName);
 5 
 6  function  getContractNameById(baseUrl, id)
 7  {
 8       var  lists  =   new  SPAPI_Lists(baseUrl);
 9       var  items  =  lists.getListItems(
10       ' Contract ' ,
11       '' ,
12       ' <Query><Where><Eq><FieldRef Name="ID"/><Value Type="Counter"> '   +  id  +   ' </Value></Eq></Where></Query> ' ,   //  query
13       ' <ViewFields><FieldRef Name="Title"/></ViewFields> ' ,
14       1 ,   //  rowLimit
15       ''    //  queryOptions
16      );
17 
18       if  (items.status  ==   200 )
19      {
20           var  rows  =  items.responseXML.getElementsByTagName( ' z:row ' );
21 
22           if  (rows.length  ==   1 )
23          {
24               return  rows[ 0 ].getAttribute( ' ows_Title ' );
25          }
26           else
27          {
28               return   null ;
29          }
30      }
31       else
32      {
33           return   null ;
34      }
35  }
36 
37  function  getUrlParam(name) 
38  {
39       var  query  =  window.location.search.substring( 1 );
40       var  pairs  =  query.split( " & " );
41       var  argname  =   "" ;
42       var  val  =   "" ;
43       for  ( var  i  =   0 ; i  <  pairs.length; i ++
44      {
45           var  pos  =  pairs[i].indexOf( ' = ' );
46           if  (pos  ==   - 1
47          {
48               continue ;
49          }
50          argname  =  pairs[i].substring( 0 , pos);
51          val  =  pairs[i].substring(pos  +   1 );
52          val  =  decodeURIComponent(val);
53           if  (argname  ==  name) 
54          {
55               return  val;
56          }
57      }
58       return   null ;
59  }
复制代码
本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/archive/2009/03/24/1419913.html,如需转载请自行联系原作者

相关文章
|
JavaScript 前端开发 Android开发
JS(Javascript)调用Android原生方法三步走
JS(Javascript)调用Android原生方法三步走
543 0
|
JavaScript 前端开发 API
js调用网页摄像头进行直播/拍照
js调用网页摄像头进行直播/拍照
431 0
js调用网页摄像头进行直播/拍照
|
JavaScript Android开发 iOS开发
html通过js调用ios或android代码
html通过js调用ios或android代码
68 0
|
移动开发 JavaScript weex
weex开发 - 方法的映射,在weex调用fetch方法,实际调用同名的原生方法,在回调中把数据传递回js
weex开发 - 方法的映射,在weex调用fetch方法,实际调用同名的原生方法,在回调中把数据传递回js
200 0
|
JavaScript
js循环调用接口
js循环调用接口
314 0
|
JavaScript 前端开发 Java
java调用js实现富文本过滤
java调用js实现富文本过滤
268 0
java调用js实现富文本过滤
|
XML Web App开发 移动开发
使用基于 WebRTC 的 JavaScript API 在浏览器环境里调用本机摄像头(二)
HTML5,JavaScript 和现代浏览器这套三驾马车的组合,使得传统的 Web 应用较之过去能实现更多更丰富的同用户交互的功能
302 0
使用基于 WebRTC 的 JavaScript API 在浏览器环境里调用本机摄像头(二)
|
Web App开发 移动开发 自然语言处理
使用基于 WebRTC 的 JavaScript API 在浏览器环境里调用本机摄像头(一)
HTML5,JavaScript 和现代浏览器这套三驾马车的组合,使得传统的 Web 应用较之过去能实现更多更丰富的同用户交互的功能
309 0
使用基于 WebRTC 的 JavaScript API 在浏览器环境里调用本机摄像头(一)
|
JavaScript 前端开发
JavaScript 进阶第六章(this与函数的调用模式 )
JavaScript 进阶第六章(this与函数的调用模式 )
87 0
|
JavaScript
vue2:mixin(混入)(公共js调用;模块化)
vue2:mixin(混入)(公共js调用;模块化)
320 0