玩框架,jquery ajax调用冲突

时间:2013-05-30 16:31:26

标签: jquery ajax playframework-2.0 conflict

好的,我的问题很简单,

我的应用程序正在使用Play framework 2.1运行,有时我需要使用jQuery创建几个ajax请求,这些请求完全独立。

这样的事情:

$.get('/url1', function(res){ ... });
$.get('/url2', function(res2){ ... });

在我的Play控制器中,我只是这样做:

public Result foo(){
    theObject = // retrieving the object...
    return ok(Json.toJson(theObject));
}

有时候(并不总是,这就是为什么它很奇怪),服务器返回我需要的东西。而其他时候,它在两个回调中给出了相同的结果,好像最后一个请求覆盖了第一个请求的结果。

我认为这是一个jQuery问题,但是当我在Play控制器中记录结果时,在返回之前,它告诉我有时候,第一个url永远不会被调用而第二个url连续被调用两次(和反之亦然,随机......)。

我正在使用MongoDB作为数据库。

似乎Play正在使用相同的线程来处理请求或类似的东西......

你怎么看? jQuery?玩框架?蒙哥?谁有罪?

提前致谢!

编辑: 我只是尝试在setTimeout()回调中进行第二次调用,延迟为... 0毫秒,结果是结果良好并且似乎没有冲突了... 但是,您将理解我无法将所有调用包装在单独的setTimeout()回调中... 为什么在零毫秒超时后不再发生这种情况?这是一个闭包/ javascript上下文问题吗?

1 个答案:

答案 0 :(得分:2)

在我的团队中,我们遇到了同样的问题,并在Play问题上发现了一个非常相似的问题: https://github.com/playframework/playframework/issues/1383

该问题的解决方案为我们解决了迄今为止的问题:

  

Play动作是有状态的,每次请求都必须实例化一次。默认情况下,bean是>春天的单身人士。您需要将它们配置为原型。