有人可以帮助我解决禁用按钮的AJAX竞争条件吗?

时间:2009-02-26 22:14:22

标签: asp.net ajax

我有一个AJAX问题。我认为ASP.NET页面上有一些按钮被禁用并在回发时重新启用,这需要由于其他原因而完成。在updatepanel中有2个下拉菜单,它们将使用AJAX。第一个下拉菜单更新第二个。第一个下拉列表中的客户端onblur调用__doPostBack,如果下拉列表中的内容发生更改,则会调用对onselectedindexchanged事件处理程序的服务器调用。问题是如果客户端onblur事件发生得太快,似乎回发发生得太快并且按钮保持禁用状态。

例如,如果用户快速浏览下拉列表,就会发生这种情况。我已经读过这是一个AJAX问题,如果服务器响应有点慢,部分渲染会搞砸。

有人有解决方案吗?

3 个答案:

答案 0 :(得分:0)

通用解决方案可以是使用带控件的计数器;仅当< = 0时递减和禁用,如果>则递增并启用0. :) ++ / - 运算符可能无法保证原子,但它们“足够好”。

答案 1 :(得分:0)

很难说没有一些代码可以看,但是......记住AJAX的第一个字母代表什么:异步。当您的回调方法实际执行时,您无法保证。或者,如果您拨打两个电话(A然后是B),您可能会收到响应A然后B ......但下次是B然后是A。

答案 2 :(得分:0)

也许你可以使用一个布尔变量,你在等待AJAX​​方法完成时标记,并在onselectedindexchanged事件方法中运行代码之前检查。这样,如果AJAX方法尚未完成,onselectedindexchanged事件方法将不会执行任何操作。