2013-05-30 16 views
2

好吧,我的問題很簡單,遊戲框架,jQuery的AJAX調用衝突

我的應用程序與遊戲框架2.1運行,有時我需要使用jQuery幾個Ajax請求,這是完全獨立

事情是這樣的:

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

在我的播放器,我只是在做:

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

什麼情況是,有時候(不總是這樣,這就是爲什麼它是怪異),服務器返回我需要的東西。而其他時候,它給了我在兩個回調中的相同結果,就好像最後一個請求覆蓋了第一個結果一樣。

我認爲這是一個jQuery問題,但是當我在我的Play控制器中記錄結果之前,在返回它之前,它顯示我有時,第一個url永遠不會被調用,第二個連續調用兩次反之亦然,隨機......)。

我正在使用MongoDB作爲數據庫。

看來,玩的是使用相同的線程來處理請求或類似的東西...

你怎麼看呢? jQuery?玩框架? Mongo?誰有罪?

在此先感謝!

編輯: 我只是試圖做的第二個呼叫與... 0毫秒的延遲的setTimeout()回調,而這樣做的結果是,結果是良好而且似乎沒有衝突了... 但是,你會明白,我不能把我所有的電話都包在一個單獨的setTimeout()回調中...... 爲什麼在零毫秒超時時不會再發生這種情況?這是一個封閉/ JavaScript的上下文問題?

+0

如果您在Ajax調用中設置了「async:false」會發生什麼情況,使您的請求同步? – Aerus

+0

該請求正常工作。我沒有找到解決我的問題的辦法,似乎是春天的原因。我在Play框架中使用Spring bean,就像在Guillaume Bort的github頁面上說的那樣,他解釋瞭如何做到這一點。 看來,當我禁用此功能,並使用靜態控制器,沒有春天功能,一切正常。當我將「複合操作」與註釋(用於身份驗證目的)和Bean控制器相結合時,問題就出現了。就那麼簡單。但我沒有找到任何解決方案,所以我們(我和我的團隊)現在只使用SpringMVC ... – TheCypher

回答

2

在我的球隊中,我們面臨着同樣的問題,並發現遊戲的問題非常類似的問題: https://github.com/playframework/playframework/issues/1383

對這個問題的解決方案解決了這一問題對我們好遠:

播放操作是有狀態的,並且每個請求都必須實例化一次。默認情況下,Spring中的bean> singleton。您需要將它們配置爲原型。