關(guān)于vbscript 與 javascript如何傳遞變量(包括服務(wù)器端與客戶端)
一:最近,經(jīng)常碰到有網(wǎng)友問(wèn),如何使vbscript和javascipt傳遞變量。不知道為什么要這么做。因?yàn)槊恳环N腳本語(yǔ)言幾乎都可以完成所需要的
功能。為什么要兩個(gè)一起用呢?不過(guò),可以告訴大家。完全可以。下面,關(guān)于為什么可以的概念,昨天我講了半天,還是有網(wǎng)友不明白。最后
把我都快搞糊涂了。所以,我們還是結(jié)合例子來(lái)說(shuō)吧。 1:vbscript與javascipt傳變量(客戶端) <HTML> <HEAD> <META name=VI60_defaultClientScript content=JavaScript> <SCRIPT LANGUAGE=vbscript> <!-- dim strTemp '首先,我們?cè)谶@里用vbscript定義一個(gè)變量 strTemp=10 '緊接著,在這里給其負(fù)值。 --> </SCRIPT>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<SCRIPT ID=clientEventHandlersJS LANGUAGE=javascript> <!--
function document_onclick() { window.alert(strTemp); /**在這里,我們不經(jīng)過(guò)定義就可以直接用剛才vbscript里的遍量了。**/ }
//--> </SCRIPT> <SCRIPT LANGUAGE=javascript FOR=document EVENT=onclick> <!-- document_onclick() /** 此時(shí),你可以通過(guò)點(diǎn)擊網(wǎng)頁(yè)就可以看到vbscript中的變量已經(jīng)傳過(guò)來(lái)了。 **/ //--> </SCRIPT> </HEAD> <BODY>
說(shuō)明:其實(shí),如果你在vbscript中定義的變量。如果不是在函數(shù)里或是過(guò)程中的,他就都是全局變量。這個(gè)全局也就是從此刻到網(wǎng)頁(yè)執(zhí)行完畢
。所以,在javascript中就可以拿來(lái)直接用了。但這里可要注意順序。腳本執(zhí)行過(guò)程是逐行解釋執(zhí)行的,如果你把vbscirpt中定義變量的部分
放在javascript之后,可能就得不到正確結(jié)果了。道理就很清楚了。 2:javascript與vbscript傳變量(客戶端) 其實(shí),這個(gè)就不用講了,也可以的。但還是給個(gè)簡(jiǎn)單的例子吧。自己看看就明白了。 HTML> <HEAD> <META name=VI60_defaultClientScript content=JavaScript> <script language=javascript> var strTemp=10; </script>
<script language=vbscript> msgbox(strTemp) </script>
</HEAD> <BODY>
3:服務(wù)器端與客戶端傳變量。 首先,我要說(shuō)的是,服務(wù)器端與客戶端腳本是可以傳的。傳什么先不要管。但是,服務(wù)器端與客戶端傳變量與上面講的不太一樣。或者不叫
傳變量。我們還是結(jié)合例子吧。 <%@ Language=VBScript %> <% dim strIp strIp=Request.ServerVariables("remote_addr") Response.Write "你的IP是:"&strIp %> <html> <body> <SCRIPT LANGUAGE=vbscript> <!-- msgbox(strIp) '請(qǐng)注意:這里是錯(cuò)的! --> </SCRIPT> </body> 執(zhí)行完上面的句子,可能不會(huì)報(bào)錯(cuò)。但答案是錯(cuò)的。原因就是我說(shuō)的,這里面是不可能吧變量傳過(guò)來(lái)的。如果我們把流程搞清楚就不會(huì)犯這
樣的錯(cuò)誤了。 首先,服務(wù)器端先解釋<% %>直接的代碼。如果有,就把他解釋執(zhí)行完畢,得到值后直接傳化為html的形式扔給客戶端。至于客戶端腳本,服
務(wù)器端會(huì)動(dòng)也不動(dòng)就扔過(guò)來(lái)。所以我們看上面的例子。客戶端的腳本不被服務(wù)器端解釋。而服務(wù)器端的腳本已經(jīng)轉(zhuǎn)化為固定的值了,所以,
strIp里什么也沒(méi)有。故得不到你想要的答案。 那如何才能將ip址傳過(guò)來(lái)呢。這個(gè)就要稍微動(dòng)一下腦子,其實(shí)不用動(dòng)。呵呵。直接把msgbox(strIp)改成這樣。 msgbox("<%=strIp%>")就可以了。注意,要加上""號(hào)的,因?yàn)檫@時(shí),strIp已經(jīng)被解釋執(zhí)行為字符串了。 看到這里,相信大家都明白了,服務(wù)器端與客戶端嚴(yán)格上,是不可能傳遞變量的。但可以變通的傳值。(叫不叫傳值,不用管他,反正已經(jīng)得
到正確答案了。呵呵)至于可不可以與客戶端的javascript傳值。我不說(shuō)你也明白了。當(dāng)然可以。
二:說(shuō)在最后的話,腳本語(yǔ)言中vbscript與javascript功能上不分上下。說(shuō)不上誰(shuí)好誰(shuí)差,可能vbscript中錯(cuò)誤處理好一些。javascript中字
符串處理好一些,但隨著vbscript中正則表達(dá)式的引入,javascript中錯(cuò)誤處理不斷增強(qiáng)。所以,用那一種我認(rèn)為都可以了。關(guān)鍵是看你的習(xí)
慣與愛(ài)好,說(shuō)這些的原因如果你用一種就可以完成,就最好不要用另一種。因?yàn)檫@樣從速度和效率來(lái)說(shuō)都是最佳的。因?yàn)闉g覽器不用同時(shí)調(diào)用
|
溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!