使用javascript代替CGI
你可能對(duì)CGI腳本比較熟悉,利用CGI你可以通過表單將數(shù)字或者變量從一個(gè)網(wǎng)頁上傳遞到另外一個(gè)網(wǎng)頁。當(dāng)然,你可以利用“POST”將變量以獨(dú)立的線程進(jìn)行傳遞而不顯示在瀏覽器中,或者利用“GET”將變量編碼到URL。
javascript不能在變量在服務(wù)器端被處理的時(shí)候利用POST方法;但是你可以注意到當(dāng)你提交一個(gè)使用GET方法的表單的時(shí)候,定位條上在文件名之后包含了額外的信息,比如:
www.pconline.com.cn/mypage.html?name=Mike&age=33
利用javascript我們可以訪問這些變量,具體可以使用一個(gè)相關(guān)的數(shù)組合來實(shí)現(xiàn),如下所示:
<SCRIPT language="javascript1.1">
<!-- Hide from older browsers
function formInput() {
// empty object
}
var valueOf = new formInput();
var pairs = document.location.search.substring(1).split("&");
for (var i=0; i < pairs.length; i++) {
var values = pairs[i].split("=");
valueOf[values[0]] = unescape(values[1]);
}
// Stop hiding -->
</SCRIPT>
以上代碼的作用是從瀏覽器的定位條上將變量提取出來并將它們存儲(chǔ)在一個(gè)相關(guān)的數(shù)組合中。在網(wǎng)頁的其它部分任何的變量都可以這樣被引用,如:valueOf["variablename"],當(dāng)然這些引用要在SCRIPT標(biāo)簽中。
作為一個(gè)測(cè)試,我們可以利用for .. in loop循環(huán)語句列出所有的被傳遞的變量。這允許我們循環(huán)掉出所有相關(guān)數(shù)組的內(nèi)容而不管我們是不是直到這些變量的名字。具體代碼如下:
<SCRIPT language="javascript">
<!-- Hide from older browsers
for (var x in valueOf) {
document.write(x + " = " + valueOf[x] + "<br>");
}
// Stop hiding -->
</SCRIPT>
這時(shí)候就會(huì)輸入以下的內(nèi)容:
name=Mike
age=33
這個(gè)例子雖然沒什么用,但是它只是為了向你顯示程序是如何工作的。這些變量現(xiàn)在就可以用在填充表單元素的內(nèi)容,或者顯示圖片或者創(chuàng)建其它的網(wǎng)頁內(nèi)容,總之可以實(shí)現(xiàn)CGI能實(shí)現(xiàn)的內(nèi)容。