今天不上班,还在端午休假中,所以随便上来写写东西,以下代码因为没开服务器,没通过调试,所以不保证没有错误,权当是一个思路。
以注册bs用户为例,我以前写注册代码的时候,会将用户个人资料存放在一个视图中,注册新用户的时候输入一个帐号,系统判断该帐号是否存在于系统中。这样运用Ajax是一个最好的方法,方便了用户交互。下面写写大概思路:
首先.创建注册表单(至于注册到names数据库的代码,这里不多讲),在表单的JS Header中写以下javascript函数:主要功能为创建XMLHTTP对象,定义回调函数处理服务器返回的数据。代码大概如下:
Code
var request;
function checkregistename()
{
request = new ActiveXObject("Msxml2.XMLHTTP")
if (!request){
request=new ActiveXObject("Microsoft.XMLHTTP");}
request.onreadystatechange=backloginname; //设定回调函数
//这里XX/XXXX.nsf假设为数据库路径,且表单中输入用户名的域名是loginID,我们要将这个域的值传递到代理中
url="/XX/XXXX.nsf/checkId?openagent&Id="+document.forms[0].loginID.value; //checkId为服务器端代理名称
request.open("post",url,true); //运行url中的代理,并通过代理运行获得需要的数据进行判断并生成的xml文档并传给表单
request.send(null);
}
function backloginname() //定义回调函数
{
if (request.readystate==4){
if (request.status==200){
if (request.responseText.indexOf("1")>-1)
{
alert (" 对不起,该帐号已经存在!");
document.forms[0].loginID.value=""; //重新设定域为空
document.forms[0].loginID.focus(); //使域获得焦点
}
}
}
}
第二.创建一个名称为checkId的代理:
Code
Sub Initialize
Dim s As New NotesSession
Dim doc,docx As NotesDocument
Dim view As NotesView
Dim db As NotesDatabase
Set doc=s.DocumentContext
Set db=s.CurrentDatabase
Set view=db.GetView("IDview") 'IDview这个视图即为帐号用户ID的视图,视图第一列为用户名
macro=|@RightBack(Query_String_Decoded;"=")| '这句是获取从URL传过来的参数,即输入的用户名ID
id=Evaluate(macro,doc)
Set docx=view.GetDocumentByKey(id(0),True)
Print "Content-type: text/xml" '输出xml表头
If Not docx Is Nothing Then
Print "1" 'xml文档内容,1为已经存在,0为不存在
Else
Print "0"
End If
End Sub
第三.在注册表单中的loginID域,在这个域的onchange或者onblur事件中调用javascript方法checkregistename(),表示在用户输入完要注册的id后马上进行是否已经存在的判断。