好在WSS给我们提供了内容丰富的WebService,我们只需要通过js去调用就行了,这跟使用Ajax基本没什么区别。虽然需求很简单,通过js调用Lists.GetListItems()方法,查找User Information List中的用户,然后再加一些判断就可以了,但是我想到在js中调用WSS提供的方法也是一个会经常使用到的东西,所以在这里整理了一下代码,也作为一个js调用WSS的通用代码,以后直接拿过来用就可以了。
首先是核心部分,这跟Ajax的核心代码基本相同,都是先构造一个XMLHttpRequest或者ActiveXObject对象,然后就是XML的发送和接收。
result;
}
}
}
}
然后就是写WSS中各个方法的调用接口。WSS中提供的方法特别多,这里只列出了常用的一部分,以后遇到其它的可以类似再添加。
Lists类下的所有方法
}
}
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 }
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 }