vbscript與javascript傳遞變數

來源:互聯網
上載者:User

關於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中Regex的引入,javascript中錯誤處理不斷增強。所以,用那一種我認為都可以了。關鍵是看你的習慣與愛好,說這些的原因如果你用一種就可以完成,就最好不要用另一種。因為這樣從速度和效率來說都是最佳的。因為瀏覽器不用同時調用兩種解釋引擎。速度當然就快了。

相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。