zoukankan      html  css  js  c++  java
  • 在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 }
  • 相关阅读:
    JobRunShell.cs not FOUND
    Manjaro Linux 更新后无法启动问题
    VMware Workstation 16 启动虚拟机失败(vmmon 版本问题)
    sql生成表模型字段
    【短道速滑六】古老的视频去噪算法(FLT_GradualNoise)解析并优化,可实现1920*1080 YUV数据400fps的处理能力。
    Mvc Redis 相关资料
    Android Handler内存泄露
    ANDROID中HANDLER使用浅析
    Android并发编程之白话文详解Future,FutureTask和Callable
    企业微信考勤接口返回的秒数与统计天数关系
  • 原文地址:https://www.cnblogs.com/jaxu/p/1419913.html
Copyright © 2011-2022 走看看