0

我在 asp.net CustomValidator 中使用 jquery ajax 来查询服务器。因为这可能需要一些时间,所以我尝试使用 BlockUI 通过消息来阻止 UI。

但是它在 Chome 和 IE9 中不起作用。在 ajax 调用完成之前不会阻塞显示,然后立即清除。我已将淡入设置设置为 0。它在 Firefox 中确实有效,如果我在阻止显示的行上放置一个断点然后单步执行,它在 Chrome 中也有效。

现在,当附加到按钮的单击事件时,相同的代码可以正常工作。所以我猜这个问题与提交事件内部或提交事件调用的 asp.net 验证链内部有关。尽管它在单步执行代码时起作用的事实可能意味着潜伏在某个地方的计时器。

然而,知道这并没有让我解决这个问题 - 所以如果有人能提供帮助,我将不胜感激。

4

1 回答 1

0

好的,问题实际上是使用同步 ajax 调用,我发现它会停止任何浏览器活动,包括显示更新!我通常不会使用同步 ajax 调用,但在这种情况下,因为它在验证器中需要阻止表单提交。

该线程讨论了可用于解决实际问题的各种选项:)

如何在没有 async = false 的情况下执行 jQuery 阻止 AJAX 调用?

进一步注意,在提交过程中尝试通过 ajax 调用服务端验证实际上是一种有缺陷的设计,除非准备构建必要的状态机来取消提交过程然后阻塞 UI 直到 ajax 返回然后继续提交过程或不是。

于 2013-05-03T06:10:56.957 回答