这是来自我的课程的作业。我需要做的是创建一个注册页面。当用户按下提交按钮时,我已将表单上的所有信息写入使用Javascript的现有XML文件。这是在客户端完成的,只能通过HTML,Javascript和XML。顺便说一下,我的教授故意没有教我们如何做到这一点,因为他希望我们自己研究它。另外,我并不太熟悉Javascript,特别是内置函数,如果可能的话,请解释代码的每一行或每种方法在做什么。如何使用Javascript将HTML中的表单数据写入XML
让我开始,这是我现有的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行“人”,一旦我按下提交。然后将其推送到已有我的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。
好吧,多谢先生们。
UPDATE !!!
在这里,我们走了,我终于想通了如何用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文件。这是我绝对不知道该怎么做的地方。有些指针会很好。
哇我已经打酱油太硬,意思是说IE – Drew 2011-05-20 03:47:42
@Drew:好吧,那更有意义。 – icktoofay 2011-05-20 03:48:20
这不是真的在作弊,因为他说我们可以用任何方法来找出如何做,因为他不会教我们。另一件事,我们只限于HTML,Javascript和XML,不能使用其他任何东西。另外,我甚至不知道jQuery,所以甚至没有帮助。在IE上使用是好的,如果你看看我的代码,它几乎只适用于IE。 – MNX1024 2011-05-20 04:22:42