這是來自我的課程的作業。我需要做的是創建一個註冊頁面。當用戶按下提交按鈕時,我已將表單上的所有信息寫入使用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