javascript - ASP.NET AJAX 回发中止

标签 javascript asp.net-ajax telerik asplinkbutton

我有一个带有两个回发事件的 ASP.NET 网页,第二个正在中止第一个。第二个在完成后不会按预期呈现。

详细说明

我有一个有效包含两个链接按钮的 ASP.NET 网页。它使用 Telerik ASP.NET AJAX 控件,但我不确定该行为是否特定于这些控件:

The Page - 一个极其精简的版本如下:

<telerik:RadToolTipManager ID="RadToolTipManager1" runat="server"
  Position="BottomLeft" RelativeTo="Element" ShowEvent="OnClick" 
  HideEvent="ManualClose" Animation="Fade" OnAjaxUpdate="OnShowItems" >  
     <TargetControls>
          <telerik:ToolTipTargetControl TargetControlID="btnShowItems" />
     </TargetControls>
</telerik:RadToolTipManager>
...
...
<asp:LinkButton ID="btnShowItems" runat="server" Visible="false">
     <span><%= ItemsPrompt %></span>
</asp:LinkButton>
...
...
<uc1:X ID="XControl" runat="server"/>

UserControl“X” - 一个极其精简的版本如下:

<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server"
  LoadingPanelID="LoadingPanel1" RenderMode="Block">
    <asp:LinkButton runat="server" ID="CausePostbackButton" 
      Style="display: none" />
</telerik:RadAjaxPanel>

用例 #1 - 成功

  1. 页面加载,控件“X”中的 JavaScript 计时器激活 LinkBut​​ton“CausePostbackButton”上的回发 [eval(__doPostBack(postbackButtonClientID,''));]。 (因此,这模拟了用户点击按钮)。
  2. AJAX 调用转到服务器,n 秒后返回并导致页面以特定方式更新。
  3. 然后用户单击 LinkBut​​ton“btnShowItems”,这会导致回发到服务器,n' 秒后返回并导致页面以特定方式更新。

用例 #2 - 失败

  1. 页面加载并且控件“X”中的 JavaScript 计时器激活 LinkBut​​ton“CausePostbackButton”上的回发。 (因此,这模拟了用户点击按钮)。

  2. 在服务器有时间响应之前,用户点击 LinkBut​​ton“btnShowItems”。

  3. 在 FireFox/Firebug 中,您可以看到第一个回发事件是“Aborted”。第二个回发事件完成(您可以看到所报告的时间)但页面没有视觉更新。

  4. 如果再次点击“手动”按钮,则一切正常。

我的想法

  • 我知道 JavaScript 是单线程的,所以如果事件不能立即运行,它们就会排队。

  • 我知道如果计时器触发一个排队的事件,然后在第一个事件仍在排队时触发同一个事件,那么其中一个事件(第二个?)将被丢弃。

  • 这就好像第一个事件被丢弃了,但随后第二个事件就再也找不到要写入的“ channel ”了。

但是,如果我将“手动”链接按钮更改为图像按钮,则行为不会改变。

知道问题是什么(最好是解决方案)吗?

提前致谢

格里夫

最佳答案

按照迪克·兰帕德的建议,我们直接联系了 Telerik。他们立即想出了解决方案:

根据设计,如果您在收到第一个请求的响应之前尝试启动另一个请求,ASP.NET AJAX Framework 会取消正在进行的 ajax 请求。例如,将 RadAjaxPanel 的 RequestQueueSize 设置为 3...

成功了!

关于javascript - ASP.NET AJAX 回发中止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6849118/

相关文章:

c# - MVC Ajax.ActionLink 找不到 POST 方法

javascript - 如何使用 jquery 或 javascript 从 telerik radcombobox 获取选定的值? val() 不工作

c# - RadGridView 改变文字颜色

javascript - 使用 Web Audio API 在声音开始时添加静音

javascript - 复选框的事件处理程序未被触发

javascript - Play 中的子模板 JS Assets 加载顺序!框架

javascript - Ajax AutoCompleteExtender 与 javascript

c# - 将数据传递到 ModalPopupExtender

javascript - jQuery:无法调用函数

javascript - Conceal Facebook Like 按钮上的计数器