2010-12-21 244 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