當兩個系統需要進行整合,即在系統a中的頁面start.aspx鏈結到系統b中的頁面end.aspx時候,如果系統a和系統b是存在於同乙個server上,我們可以考慮的傳值方式可以為querystring、cookies、以及form提交。
querystring傳值是應用相當廣泛的一種頁間傳值的方法,但是querystring的頁間傳值存在著兩點致命的侷限:首先就是總所周知的傳遞的值會在位址列中被明文顯示,當需要傳遞敏感資訊資料的時候,這種方式是需要多掂量掂量的~另外乙個問題就是傳遞資料的長度的侷限性:我曾經做過乙個測試,將一條長度為100個漢字的資料進行htmlencode之後進行傳遞,就會由於引數過長而導致位址失效,從而不能準確跳轉,更不要說準確傳遞資料了。因此,querystring傳值的應用多數還是在長度比較短且不存在敏感資訊的場合下。
cookies傳值一直被認為是存在著比較大的安全問題的,雖然其自身包含加解密的功能,但一般還是只在保持使用者自定義風格這樣的場合使用。回到我們的主題,兩個不同的系統想要通過cookies傳值傳值,除了要考慮資料機密性、使用者瀏覽器設定等因素外,還必須保證這兩個系統(系統a跟系統b)是存在於同乙個域之下的,這樣除了導致系統耦合度增高以外,也令cookies資料的訪問更加混亂而難以控制。
在網上進行技術調查的時候,有看到有人指出使用其他的方法實現域間資料共享,他指出『看看sohu.com,他網域名稱夠多,他有個crossdomain的js』,具體的內容我還沒有去仔細研究過,等稍後空閒下來一定去找找相關資料。
但是當a、b不存在於同乙個server的時候,cookies共享的方式也顯然失去了存在的可能,那麼唯一的出路就是本片的重點,form提交方式。
form提交方式其實也相當簡單,思路是在頁面中新建乙個form,將action設定為想要鏈結到的網址(end.aspx),在該form中放置幾個hidden的input,設定其name屬性,通過js指令碼將需要傳遞的引數分別寫入到這些hiddentext的value值之後,呼叫該form的submit方法提交。在end.aspx頁面load中使用request["hiddentext的name"]獲取傳遞的資料。如果不希望傳遞的資料在位址列中出現,可以將該form的method設定為post,而如果end.aspx頁面是以開啟新頁面的方式開啟,則只需將form的target屬性設定為-blank即可。
下面附帶一些示例程式碼:
鏈結的
html
:
href="#" οnclick="openend()">testopenend
提交用form
的
html
:
提交用
js
指令碼:
function openend()
另外,當彈出的頁面end.sapx需要以一定的樣式開啟時,我們可以先開啟乙個具備了一定樣式的空白視窗,然後再在form提交的時候,將該空白視窗定位到end.aspx,這個過程需要注意的是使用window.open開啟乙個空白頁面的時候,要獲取乙個頁面name,設定為form的target。
示例程式碼如下:
提交用form
的
html
:
提交用
js
指令碼:
function openend()
關於使用者控制項中呼叫不同頁面的方法
一直困擾我好久的 問題今天終於得到了答案 1 使用者控制項之間方法的呼叫 準備工作 先放兩個使用者控制項one 和two 到頁面default.aspx 上 在one中加上乙個textbox and button 在two中寫一方法 如下 在one中呼叫事件 如下 這是用到反射的技術找到頁面中 ch...
python 根據不同引數呼叫不同的函式
有時候需要根據不同的情況呼叫不同的方法實現功能邏輯,有什麼優雅的方式可以實現麼?首先有乙個最原始的if else方式 parm a defa print a defb print b if parm a a elif parm b b 這樣的方式可以實現功能邏輯,但是略顯low,而且後續的擴充套件不...
python 根據不同引數呼叫不同的函式
有時候需要根據不同的情況呼叫不同的方法實現功能邏輯,有什麼優雅的方式可以實現麼?首先有乙個最原始的if else方式 parm a defa print a defb print b if parm a a elif parm b b 這樣的方式可以實現功能邏輯,但是略顯low,而且後續的擴充套件不...