關於vbscript 與 javascript如何傳遞變量(包括服務器端與客戶端)

轉自:http://www.lesun.org/html/2002-08/1199.htm

關於vbscript 與 javascript如何傳遞變量(包括服務器端與客戶端)

關鍵詞:VBScript, ASP, JavaScript

關於vbscript 與 javascript如何傳遞變量(包括服務器端與客戶端)

一:最近,經常碰到有網友問,如何使vbscript和javascipt傳遞變量。不知道爲什麼要這麼做。因爲每一種腳本語言幾乎都可以完成所需要的

功能。爲什麼要兩個一起用呢?不過,可以告訴大家。完全可以。下面,關於爲什麼可以的概念,昨天我講了半天,還是有網友不明白。最後

把我都快搞糊塗了。所以,我們還是結合例子來說吧。
1:vbscript與javascipt傳變量(客戶端)
<HTML>
<HEAD>
<META name=VI60_defaultClientScript content=JavaScript>
<SCRIPT LANGUAGE=vbscript>            
<!--                              
dim strTemp                       '首先,我們在這裏用vbscript定義一個變量
strTemp=10                        '緊接着,在這裏給其負值。
-->
</SCRIPT>

<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">

<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript>
<!--

function document_onclick() {
window.alert(strTemp);      /**在這裏,我們不經過定義就可以直接用剛纔vbscript裏的遍量了。**/
}

//-->
</SCRIPT>
<SCRIPT LANGUAGE=javascript FOR=document EVENT=onclick>
<!--
document_onclick()      /** 此時,你可以通過點擊網頁就可以看到vbscript中的變量已經傳過來了。 **/
//-->
</SCRIPT>
</HEAD>
<BODY>

說明:其實,如果你在vbscript中定義的變量。如果不是在函數裏或是過程中的,他就都是全局變量。這個全局也就是從此刻到網頁執行完畢

。所以,在javascript中就可以拿來直接用了。但這裏可要注意順序。腳本執行過程是逐行解釋執行的,如果你把vbscirpt中定義變量的部分

放在javascript之後,可能就得不到正確結果了。道理就很清楚了。


2:javascript與vbscript傳變量(客戶端)
其實,這個就不用講了,也可以的。但還是給個簡單的例子吧。自己看看就明白了。
HTML>
<HEAD>
<META name=VI60_defaultClientScript content=JavaScript>
<script language=javascript>
var strTemp=10;
</script>

<script language=vbscript>
msgbox(strTemp)
</script>

</HEAD>
<BODY>

3:服務器端與客戶端傳變量。
  首先,我要說的是,服務器端與客戶端腳本是可以傳的。傳什麼先不要管。但是,服務器端與客戶端傳變量與上面講的不太一樣。或者不叫

傳變量。我們還是結合例子吧。
<%@ Language=VBScript %>
<%
dim strIp
strIp=Request.ServerVariables("remote_addr")
Response.Write "你的IP是:"&strIp
%>
<html>
<body>
<SCRIPT LANGUAGE=vbscript>
<!--
msgbox(strIp)          '請注意:這裏是錯的!
-->
</SCRIPT>
</body>
  執行完上面的句子,可能不會報錯。但答案是錯的。原因就是我說的,這裏面是不可能吧變量傳過來的。如果我們把流程搞清楚就不會犯這

樣的錯誤了。
  首先,服務器端先解釋<% %>直接的代碼。如果有,就把他解釋執行完畢,得到值後直接傳化爲html的形式扔給客戶端。至於客戶端腳本,服

務器端會動也不動就扔過來。所以我們看上面的例子。客戶端的腳本不被服務器端解釋。而服務器端的腳本已經轉化爲固定的值了,所以,

strIp裏什麼也沒有。故得不到你想要的答案。
  那如何才能將ip址傳過來呢。這個就要稍微動一下腦子,其實不用動。呵呵。直接把msgbox(strIp)改成這樣。
  msgbox("<%=strIp%>")就可以了。注意,要加上""號的,因爲這時,strIp已經被解釋執行爲字符串了。
看到這裏,相信大家都明白了,服務器端與客戶端嚴格上,是不可能傳遞變量的。但可以變通的傳值。(叫不叫傳值,不用管他,反正已經得

到正確答案了。呵呵)至於可不可以與客戶端的javascript傳值。我不說你也明白了。當然可以。

二:說在最後的話,腳本語言中vbscript與javascript功能上不分上下。說不上誰好誰差,可能vbscript中錯誤處理好一些。javascript中字

符串處理好一些,但隨着vbscript中正則表達式的引入,javascript中錯誤處理不斷增強。所以,用那一種我認爲都可以了。關鍵是看你的習

慣與愛好,說這些的原因如果你用一種就可以完成,就最好不要用另一種。因爲這樣從速度和效率來說都是最佳的。因爲瀏覽器不用同時調用

兩種解釋引擎。速度當然就快了。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章