我遇到一个奇怪的问题,第一个ajax调用的响应参数被第二个调用的param覆盖了。 代码是:
当 drawDonutForExternalLogin &连续调用 drawDonutForExtUser ,后一个请求的响应变量(成功处理程序的数据参数)将覆盖第一个请求的数据参数。
调用几乎在同一时间完成,但是当存在差异时,这个问题不会发生。当从第一个函数的成功处理程序调用第二个函数时,数据集也很好。
当呼叫连续并同时结束时,为什么数据参数变得相同?
我尝试通过放置断点来调试服务器端代码,但这也提供了ajax请求之间的延迟,从而产生了正确的结果。
有什么想法吗?
答案 0 :(得分:1)
从documentation复制到OP的请求:
可能的原因是servlet没有写成线程 安全。请注意,包含servlet方法的对象可能是 用于响应许多同时请求。如果该方法使用 类级变量创建响应,然后会出现请求 混淆起来'
所以..请求#1进来,分配给Servlet的一个实例, 实例#1
在Instance#1上调用适当的方法,它开始使用a 用于计算结果的类变量。实例#1.myVariable = "布拉赫"
现在,请求#2进入,也被分配给实例#1
同样,在实例#1上调用适当的方法,该方法设置 实例#1.myVariable =" Foo"
..在第一个请求完成的同时,返回Instance 1.myVariable ......" Foo"!
..然后第二个请求完成,并返回" Foo"。