Re: [問題] 大量request下IE少傳參數

看板Ajax作者 (瘋人院院長)時間15年前 (2010/03/15 22:01), 編輯推噓2(208)
留言10則, 5人參與, 最新討論串2/2 (看更多)
剛剛用IEinspector看,ie送出的post跟firefox一樣並沒有少參數,所以ie並沒有 漏傳參數 但是還是會產生server side的exception如下 java.lang.IllegalStateException: No modifications are allowed to a locked ParameterMap google的結果是說,ParameterMap在servlet中已經鎖定,所以無法變更ParameterMap 的內容 我想tomcat應該沒問題,因為firefox跟ie都送同樣的request到server,但是firefox 可以正常處理,但是ie不行,所以還是把問題放在ie上 我猜應該是ie在送ajax request時,還沒等到server response json object時 就再次送出下個request,導致server丟出exception,同時server產生exception 也無法再處理之後的request,最後就收不到回傳的json 但是只要把ajax request用setTimeout分別隔開ie就可以正確的處理 像這樣 setTimeout('$("#grid-1").flexReload();',1000); setTimeout('$("#grid-2").flexReload();',2000); setTimeout('$("#grid-3").flexReload();',3000); setTimeout('$("#grid-4").flexReload();',4000); setTimeout('$("#grid-5").flexReload();',5000); 將五個ajax request分別隔開一秒就可以避免這個問題產生 雖然說~這樣可以解決問題~不過一定要用這種方法嗎? 我的環境是 ie6,ie8,firefox 3.5,chrome 5.0 tomcat6.0.26 jdk 1.6 jquery 1.4.2 ※ 引述《plokijuh (瘋人院院長)》之銘言: : 因為工作是撰寫web base系統,所以一個頁面用到許多的datagrid : 目前是用 jquery + flexgrid : 每個grid都用ajax到server拿資料 : 在firefox,chrome下都是正常,不過ie就有問題 : ie在傳參數到server時常常會漏掉參數,導致回來的資料不正確 : 例如 : 正常情況應該是要傳 : page=1 : limit=100 : user=123 : .... : 大約10個參數,用post的方式傳到server : firefox,chrome下都是正常,只有ie會漏傳參數,試過ie6, ie8都一樣 : 目前是用settimeout讓ajax request慢一點 : 這樣ie就不會漏參數,不知道這是ie的問題,還是說是另外的問題 : jquery 試過 1.3 跟 1.4 都一樣 : 不知道為何為這樣? -- my blog http://blog.cheyingwu.tw/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 115.80.207.190 ※ 編輯: plokijuh 來自: 115.80.207.190 (03/15 22:16)

03/15 23:16, , 1F
如果 server不能同時處理多筆資料,最好等資料回來再丟下一
03/15 23:16, 1F

03/15 23:16, , 2F
個request. setTimeout並不能保證順序,尤其可能會網路延遲
03/15 23:16, 2F

03/15 23:18, , 3F
然後我覺得…應該不是因為同時發起多個請求。
03/15 23:18, 3F

03/15 23:19, , 4F
其實因為可以看得到的detail太少了,所以很難去抓到細節.
03/15 23:19, 4F

03/15 23:50, , 5F
非同步的 ajax request 每個都可以是獨立的,IE 也是如此~~
03/15 23:50, 5F

03/16 00:23, , 6F
to grence 基本上每個datagrid都是獨立的,所以順序亂掉
03/16 00:23, 6F

03/16 00:25, , 7F
是沒啥問題~只要能夠收到回傳json object就好了
03/16 00:25, 7F

03/16 19:49, , 8F
我是指setTimeout還是可能讓server在處理的時候又接到要求
03/16 19:49, 8F

04/20 02:56, , 9F
之前寫過類似的不過是用遞迴..可以考慮看看...
04/20 02:56, 9F

04/20 02:57, , 10F
complete:function(){遞迴函數(index+1)}
04/20 02:57, 10F
文章代碼(AID): #1BdZsxWa (Ajax)
討論串 (同標題文章)
文章代碼(AID): #1BdZsxWa (Ajax)