2011-04-06 104 views
1

我有一個會話是結構刪除會話/結構使用ColdFusion

的集合

SESSION.squad.achievements [鍵]

因此它可能是

SESSION.squad.achievements[2010] = "swam the english channel"; 
SESSION.squad.achievements[2009] = "ran a marathon"; 
SESSION.squad.achievements[2008] = "cycled Le Tour"; 

我的代碼刪除暫時結構,但不刪除會話,所以當我刷新的值仍然存在時

<cfset myYear = #myYear# /> 
<cfset #StructDelete(SESSION.squad.achievements, myYear)#> 

任何想法如何刪除此值?

+0

您可以指定的值要被刪除?在這裏你的代碼應該刪除,爲年= 2010,價值SESSION.squad.achievements [2010] =「游泳英語頻道」不? – 2011-04-06 10:41:11

+0

另外,你如何測試該值已被刪除?可能是因爲刷新操作導致值再次被設置...在刪除語句之前和之後轉儲會話,以便您可以查看是否實際刪除了該語句。另外,驗證myYear的值爲''看起來不正確。 – 2011-04-06 12:53:27

回答

2

嘗試使用CFLOCK

<cflock timeout="30" throwontimeout="No" type="EXCLUSIVE" scope="SESSION"> 
    <cfset StructDelete(SESSION.squad.achievements, myYear)> 
</cflock> 
+0

羅斯或盧卡斯,這是如何解決問題的?令人困惑的問題首先是因爲它沒有足夠的信息,但我不明白cflock在這種情況下做了什麼有用的事情。 – 2011-04-06 17:01:22

+0

刪除代碼通過jquery/ajax調用,值#myYear#通過post傳遞。我之前從未使用過cflock,但它似乎鎖定了代碼,以便在頁面刷新之前將值刪除。我的代碼在使用前看起來很好,也許盧卡斯知道更多關於是如何工作的。關於它在本Nadel的網站上有一點 - http://www.bennadel.com/blog/1123-CFLock-And-Negative-Outcomes-Think-It-Through.htm – 2011-04-06 17:53:49

+0

實際上閱讀它似乎有點破解,可能我需要的是做一些錯誤檢查,以確保在調用刷新之前刪除會話支撐。它現在可以工作,但會回來尋求更穩固的解決方案 – 2011-04-06 18:01:20