2011-10-25 76 views
1

我有一個基於名字和姓氏表單字段搜索人員記錄的先行表單字段。字段由Jquery發佈,人員列表以JSON形式返回並且結果顯示爲表格。爲每個關鍵事件提交發布請求。但我有這個問題。Spring MVC - JSON響應 - 如何防止

可以說,用戶在名字字段中輸入'a'。該請求以ajax調用提交。然後用戶在該字段中輸入'b'。現在請求再次以'ab'作爲名字提交。問題是,'ab'的結果數量較少,因此結果會立即顯示。由於'a'具有更多結果,因此需要一些時間來處理和構建結果表,並且一旦完成構建表,它就會替換現有的'ab'表。這不是我想要的行爲,因爲'a'是第一個請求,'ab'是最新的請求,它不應該被取代。那麼,如何防止舊請求中的結果取代新的結果。提前致謝!

---更新---

控制器的方法是一樣的東西..

public @ResponseBody List<PSPerson> getPersonsWithNames(
     @RequestParam("firstName") String firstName, @RequestParam("lastName") String lastName) 
{ 

    Map<String, String> attrMap = new HashMap<String, String>(); 

    attrMap.put("firstName", firstName); 
    attrMap.put("lastName", lastName); 

    return personService.getPeople(attrMap); 
} 

回答

0

也許你可以時間戳添加到您的返回的JSON值。並在您的jQuery比較最新的時間戳收到實際。

+0

感謝您的回覆WarfarA .. JSON響應是Person對象的列表。如何爲此響應添加額外的變量? – RKodakandla

0

很多,你在網絡上看到的前瞻/自動完成的表格有(在PengoWorks jQuery的自動完成功能這是minChars,例如)字符的「閾值計數」。 如果您使用的是jQuery插件,您還可以使用delay選項指定在發送AJAX請求之前要等待的毫秒數。

如果使用的是典型的minChars值,如3,再加上也許100ms的合理delay值,你可能會「縮小」的搜索空間不夠沒有與一個結果「超車」另一個任何問題。

你可以嘗試玩這些值here

編輯:同樣的選項jQueryUI可供選擇 - 他們被稱爲minLengthdelay