作者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