作者plokijuh (瘋人院院長)
看板Ajax
標題Re: [問題] 大量request下IE少傳參數
時間Mon Mar 15 22:01:26 2010
剛剛用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)
1F:→ grence:如果 server不能同時處理多筆資料,最好等資料回來再丟下一 03/15 23:16
2F:→ grence:個request. setTimeout並不能保證順序,尤其可能會網路延遲 03/15 23:16
3F:→ grence:然後我覺得…應該不是因為同時發起多個請求。 03/15 23:18
4F:→ TonyQ:其實因為可以看得到的detail太少了,所以很難去抓到細節. 03/15 23:19
5F:推 pply:非同步的 ajax request 每個都可以是獨立的,IE 也是如此~~ 03/15 23:50
6F:→ plokijuh:to grence 基本上每個datagrid都是獨立的,所以順序亂掉 03/16 00:23
7F:→ plokijuh:是沒啥問題~只要能夠收到回傳json object就好了 03/16 00:25
8F:→ grence:我是指setTimeout還是可能讓server在處理的時候又接到要求 03/16 19:49
9F:推 j100002ben:之前寫過類似的不過是用遞迴..可以考慮看看... 04/20 02:56
10F:→ j100002ben:complete:function(){遞迴函數(index+1)} 04/20 02:57