2010-04-30 96 views
2

我打開一個新的彈出窗口,點擊我的網頁中的一個URL。 我的問題在這裏是我可以傳遞整個結構到新的頁面?我們可以通過URL傳遞整個結構嗎?

如果這是不可能的有沒有簡單的方法來做到這一點?

回答

1

擴大詹姆斯白金漢宮的答案...

(這裏假設你有會話管理設置爲true

在調用頁面,只需將您的結構複製到一個會話變量:

<cfset session.myTempStruct=variables.myTempStruct /> 

然後,在彈出窗口中,複製結構回本地範圍爲該請求:

<cfset variables.myTempStruct=session.myTempStruct /> 

如果您不希望該結構在會話中閒逛,您可以讓彈出式窗口的請求在將其複製到本地範圍之後立即將其從會話中刪除。

<cfset structDelete(session, "myTempStruct") /> 
0

您可以將您的數據點作爲參數添加到URI的末尾,但我不建議使用您所看到的方法,因爲它很容易被注入。

+0

數據點!你的意思是結構中的所有值和鍵? – Somu 2010-04-30 11:45:49

+0

是的,因爲參數通常是一個命名實體及其分配的值。 – 2010-04-30 17:08:43

1

雖然HIGHLY不建議,你可以這樣做:

<cfset tmp = {} /> 
<cfset tmp.name="Marcos" /> 
<cfset tmp.lname="Placona" /> 

<cfwddx action="cfml2wddx" input="#tmp" output="tmpWDDX"> 

<a href="index.cfm?string=#tmpWDDX#">link</a> 

如果你決定採取這種方法,我建議通過發送形式的信息,而不是URL。

您始終可以選擇將數據存儲在持久對象(如bean)中,或者使用更簡單的方法(如會話)。

希望這可以幫到你

+0

感謝馬科斯。 這可能會有所幫助,但正如你所說的那樣非常推薦,我必須考慮以不同的方式來做到這一點。 – Somu 2010-04-30 11:48:55

8

頁面是否在同一個應用程序的URL部分中打開?

如果是這樣的話,更好的方法是在用戶的會話中保存結構並以這種方式提取信息。更清晰的網址,代碼和更安全。

乾杯, 詹姆斯

+0

是的。新頁面是相同的應用程序。 因爲我對COldFusion完全陌生,不得不弄清楚它是如何完成的。 謝謝 – Somu 2010-04-30 11:44:39

+0

我就是這麼做的。 – ale 2010-04-30 13:34:23

0

序列化結構(與serializeJSON()或東西),並puttin蠢貨,網址似乎萬一結構合理是不是太大(閱讀:在總共不到3-4k字符)。

其他的解決辦法是把這個在一些共享範圍:會話,應用程序等

第三,將調用與CFM POST請求,其可以處理較大的結構則GET。

相關問題