2010-12-21 98 views
3

我正在使用MVC2的內置ajax功能。基本上,用戶輸入一個搜索查詢,並在每個按鍵上顯示查詢的一組結果。這在幾乎所有情況下都可以正常工作,但有時候服務器有點慢,只有一個響應,因此下一個擊鍵的結果會在前一個響應之前返回。當以前的鍵擊結果集最終返回給客戶端時,它將覆蓋實際應該顯示的較新搜索查詢的結果。防止競爭條件

我的代碼如下或多或少沿着這些路線:

​​

每次擊鍵提交本形式,因此在「findUserResults」元素的結果輸出。

如何在仍然使用MVC2提供的內置函數的同時防止顯示較舊的結果?

+0

我不知道ASP MVC的Ajax是如何工作的,但是不能在開始下一個Ajax之前中止以前的Ajax調用嗎? – rossisdead 2010-12-21 23:27:02

回答

0

您可以爲每個請求發送一個時間戳,並將結果返回,如果時間戳在前一個之後,則只顯示結果。

new Date().getTime() 

返回自紀元開始以來的毫秒數。

或者,您可以在每個頁面上使用遞增計數器。

+0

「如何在仍然使用MVC2提供的內置函數的同時防止顯示較舊的結果」。你的解決方案需要我從頭開始構建所有的東西。 – 2010-12-21 23:44:12