在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的发送和接收。

SPAPI_Core

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

Lists类下的所有方法

SPAPI_Lists

UserGroup类下的部分常用方法

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  }

你可能感兴趣的:(JavaScript)