【发布时间】:2011-05-20 02:19:52
【问题描述】:
这是我班上的作业。我需要做的是创建一个注册页面。当用户按下提交按钮时,我已获取表单上的所有信息并使用 Javascript 将其写入现有 XML 文件。这是在客户端完成的,仅通过 HTML、Javascript 和 XML。顺便说一句,我的教授故意不教我们怎么做,因为他想让我们自己研究。另外,我对 Javascript 不太熟悉,尤其是内置函数,如果可能的话,请解释一下每行代码或代码方法的作用。
让我开始吧,这是我现有的 XML 的样子:
<?xml version ="1.0" encoding="utf-8" ?>
<!--GGFGFGFVBFVVVHVBV-->
<PersonInfo>
<Person Usrname="Bob111" Pswd="Smith111" personid="111" FirstName="Bob" LastName="Smith" DOB="01/01/1960" Gender="M" Title="Hello1">
</Person>
<!-- several more lines of <person> here -->
</PersonInfo>
保存表单数据的时候,要按照里面的所有布局,基本上我需要Usrname、Pswd、personid等等。
基本上,据我了解,一旦我按下提交,我就必须从我的注册页面创建 XML 行“Person”。然后将它推送到已经有我的 XML 信息的数组,然后用数组上的信息覆盖我的 XML 文档。我的问题是,我完全不知道该怎么做。
对于那些想知道我的注册页面是什么样子的人,这里是:
<html>
<head>
<title>Registration</title>
<link rel="stylesheet" type="text/css" href="CSS_LABs.css" />
</head>
<body>
<div class="form">
<form id="Registration" action="" method="get">
Username:<input type="text" name="usrname" maxlength="10"/> <br/>
Password:<input type="password" name="pswd" maxlength="20"/> <br/>
<hr>
PersonID:<input type="text" name="PID" /> <br>
<hr>
First Name:<input type="text" name="fname"/> <br>
Last Name:<input type="text" name="lname"/>
<hr>
DOB:<input type="text" name="dob" /> <br>
<hr>
Gender:<input type="text" name="sex" /> <br>
<hr>
Title:<input type="text" name="title" /> <br>
<hr>
Secret Question:<br>
<select name="secret?">
</select> <br>
Answer:<input type="text" name="answer" /> <br> <br>
<input type="submit" value="submit" />
</form>
</div>
</body>
</html>
顺便说一句,我知道我的 HTML 文档中的某些信息可能措辞不当,所以希望你们不要介意。此外,我还必须稍后通过将秘密问题的答案放在后面来修复我的 XML。
好的,非常感谢各位。
更新!!!
到这里,我终于知道如何用 Javascript 创建 XML 文档了,代码如下:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var FILENAME = 'G:\\CST2309 - Web Programming 1\\Copy of Take Home Exam - Copy\\PersonXML2.xml';
function SaveXML(UserData)
{
var file = fso.CreateTextFile(FILENAME, true);
file.WriteLine('<?xml version="1.0" encoding="utf-8"?>\n');
file.WriteLine('<PersonInfo>\n');
for (countr = 0; countr < UserData.length; countr++) {
file.Write(' <Person ');
file.Write('Usrname="' + UserData[countr][0] + '" ');
file.Write('Pswd="' + UserData[countr][1] + '" ');
file.Write('PersonID="' + UserData[countr][2] + '" ');
file.Write('FirstName="' + UserData[countr][3] + '" ');
file.Write('LastName="' + UserData[countr][4] + '" ');
file.Write('Gender="' + UserData[countr][5] + '" ');
file.Write('DOB="' + UserData[countr][6] + '" ');
file.Write('Title="' + UserData[countr][7] + '"');
file.WriteLine('></Person>\n');
} // end for countr
file.WriteLine('</PersonInfo>\n');
file.Close();
} // end SaveXML function --------------------
function LoadXML(xmlFile)
{
xmlDoc.load(xmlFile);
return xmlDoc.documentElement;
} //end function LoadXML()
function initialize_array()
{
var person = new Array();
var noFile = true;
var xmlObj;
if (fso.FileExists(FILENAME))
{
xmlObj = LoadXML(FILENAME);
noFile = false;
} // if
else
{
xmlObj = LoadXML("PersonXML.xml");
//alert("local" + xmlObj);
} // end if
var usrCount = 0;
while (usrCount < xmlObj.childNodes.length)
{
var tmpUsrs = new Array(xmlObj.childNodes(usrCount).getAttribute("Usrname"),
xmlObj.childNodes(usrCount).getAttribute("Pswd"),
xmlObj.childNodes(usrCount).getAttribute("PersonID"),
xmlObj.childNodes(usrCount).getAttribute("FirstName"),
xmlObj.childNodes(usrCount).getAttribute("LastName"),
xmlObj.childNodes(usrCount).getAttribute("Gender"),
xmlObj.childNodes(usrCount).getAttribute("DOB"),
xmlObj.childNodes(usrCount).getAttribute("Title"));
person.push(tmpUsrs);
usrCount++;
} //end while
if (noFile == false)
fso.DeleteFile(FILENAME);
SaveXML(person);
} // end function initialize_array()
这里的代码所做的是,它将我的原始 XML 文件加载到一个数组中,以便它可以创建一个新的 XML 文件。基本上我已经完成了创建 XML 文件的部分,但我的其余部分仍然需要帮助。
我的目标是尝试获取我的表单数据并将其推送到我现有的数组中,而不是覆盖它,添加到它,这样我就可以使用新的注册信息更新我现有的 XML 文件。这是我完全不知道该怎么做的地方。一些指针会很好。
【问题讨论】:
标签: javascript html xml