jQuery Ajax:Sucess Response参数覆盖

时间:2016-08-16 09:42:30

标签: javascript jquery ajax

我遇到一个奇怪的问题,第一个ajax调用的响应参数被第二个调用的param覆盖了。 代码是:

http://pastebin.com/degWRs3V

drawDonutForExternalLogin &连续调用 drawDonutForExtUser ,后一个请求的响应变量(成功处理程序的数据参数)将覆盖第一个请求的数据参数。

调用几乎在同一时间完成,但是当存在差异时,这个问题不会发生。当从第一个函数的成功处理程序调用第二个函数时,数据集也很好。

当呼叫连续并同时结束时,为什么数据参数变得相同?

我尝试通过放置断点来调试服务器端代码,但这也提供了ajax请求之间的延迟,从而产生了正确的结果。

有什么想法吗?

1 个答案:

答案 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"。