在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  }
复制代码
本文转自Jaxu博客园博客,原文链接:http://www.cnblogs.com/jaxu/archive/2009/03/24/1419913.html,如需转载请自行联系原作者

相关文章
|
JavaScript 前端开发 Android开发
JS(Javascript)调用Android原生方法三步走
JS(Javascript)调用Android原生方法三步走
577 0
|
JavaScript 前端开发 API
js调用网页摄像头进行直播/拍照
js调用网页摄像头进行直播/拍照
439 0
js调用网页摄像头进行直播/拍照
|
JavaScript Android开发 iOS开发
html通过js调用ios或android代码
html通过js调用ios或android代码
69 0
|
移动开发 JavaScript weex
weex开发 - 方法的映射,在weex调用fetch方法,实际调用同名的原生方法,在回调中把数据传递回js
weex开发 - 方法的映射,在weex调用fetch方法,实际调用同名的原生方法,在回调中把数据传递回js
204 0
|
JavaScript 前端开发 Java
java调用js实现富文本过滤
java调用js实现富文本过滤
272 0
java调用js实现富文本过滤
|
JavaScript
js循环调用接口
js循环调用接口
324 0
|
JavaScript 前端开发
JavaScript 进阶第六章(this与函数的调用模式 )
JavaScript 进阶第六章(this与函数的调用模式 )
91 0
|
JavaScript
vue2:mixin(混入)(公共js调用;模块化)
vue2:mixin(混入)(公共js调用;模块化)
339 0
|
Web App开发 前端开发 JavaScript
Javascript 的工作原理:引擎、运行时和调用堆栈概述
随着 Javascript 越来越流行,使其应用的场景越来越多,不仅限于前端,可以是后端、混合应用程序、嵌入式设备等等,于是就有了大前端的叫法。本文开始带大家一起回顾总结 Javascript 的构建块以及它们是如何协同工作,理解其原理,将有助于编写更优的代码。
202 0
Javascript 的工作原理:引擎、运行时和调用堆栈概述
|
JavaScript 前端开发 Java
JS 调用栈机制与 ES6 尾调用优化介绍
调用栈的英文名叫做Call Stack,大家或多或少是有听过的,但是对于js调用栈的工作方式以及如何在工作中利用这一特性,大部分人可能没有进行过更深入的研究,这块内容可以说对我们前端来说就是所谓的基础知识,咋一看好像用处并没有很大,但掌握好这个知识点,就可以让我们在以后可以走的更远,走的更快! 目录 数据结构:栈 调用栈是什么?用来做什么? 调用栈的运行机制 调用栈优化内存 调用栈debug大法 数据结构:栈 栈是一种遵从后进先出(LIFO)原则的有序集合,新元素都靠近栈顶,旧元素都接近栈底。 生活中的栗子,帮助一下理解:
219 0
JS 调用栈机制与 ES6 尾调用优化介绍