MozTW 討論區

各項 Mozilla 相關軟體與技術討論
現在的時間是 2025-09-09, 05:26

所有顯示的時間為 UTC + 8 小時





發表新文章 回覆主題  [ 1 篇文章 ] 
發表人 內容
文章發表於 : 2008-07-24, 21:50 
離線

註冊時間: 2008-07-24, 21:17
文章: 1
小弟使用的版本是 Firefox 3.0.1,今天在 coding 時發現一個異常詭異卻又完全無解的怪事。

小弟使用的語言是 JSP + JavaScript,因需求必需在頁面生成時使用 JSP 隨機產生一個值,並把該值寫入 Session 並呈現在頁面上,而在頁面載入完成時又需要執行到JavaScript 的 eval(),於是怪事發生了,小弟發現頁面上的值一直無法符合 Session 中的值,後來查了一下 Server 的 log,發現 Firefox 3 竟然多傳了一次 request 給 Server,經過一步一步的追蹤發現原兇竟然是 eval()。

小弟發現當第一次執行 eval() 時,eval() 會發 requset 給 server,但是這個 request 返回的頁面卻又不顯示在 Firefox 上,而由於 JSP 在產生頁面時隨機生成一個值寫入 Session 中,如此造成了 Session 內的值和頁面上的值不相同的問題。

上面的描述有點亂,小弟用 step by step 的方法來描述:

1. 利用 Firefox 3 連結到 Test.jsp

2. Test.jsp 在生成時會亂數產生一個值 "abc",並將 "abc" 寫入 Session 與 呈現在畫面上。

3. 當 JSP 執行結束時,Session 中的值為 abc,且在頁面上也可以看到 abc 這個值。

4. 此時頁面開始執行 JavaScript,並執行到 eval()。

5. eval() 私底下發出一個 request 到 Server,要求再執行一次 Test.jsp。

6. Test.jsp 開始執行,並亂數產生一個值 "123",將 "123" 寫入 Session 與 呈現在畫面上。

7. 由於 eval() 發出的 request 所返回的畫面並不會呈現在 FireFox 上,因此目前頁面上所呈現的還是第 2 步完成時所生成的亂數 "abc"。

8. 此時頁面上的值為 "abc",但 Session 中的值已經變成 "123" 了。


上述的問題小弟在 IE、Firefox 2 上面測都不會有這樣的怪事,唯獨 Firefox 3 會如此,而更詭異的是如果畫面上同時有多個 eval() 存在時,只有第一個 eval() 會發 request,其他的都不會。小弟想過很多方法都無解,google 上也找不到類似的問題,不得已只得 po 上這裏請各位幫忙,還請知道解法的朋友能不吝指教。謝謝!


回頂端
Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-TW; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
 個人資料  
引用回覆  
顯示文章 :  排序  
發表新文章 回覆主題  [ 1 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 65 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
Powered by phpBB® Forum Software © phpBB Group
正體中文語系由 竹貓星球 維護製作
© moztw.org, Mozilla Foundation
MozTW,Mozilla 台灣社群