我有兩個回發事件,第二個被中止第一個ASP.NET網頁。第二個一旦完成就不會按預期呈現。ASP.NET AJAX回傳中止
詳細
我有一個ASP.NET網頁,有效地包含兩個鏈接按鈕。它使用Telerik的ASP.NET AJAX控件,但我不知道,如果行爲是specfic這些控件:
頁 - 一個非常簡化版本如下:
<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"/>
的用戶控件 「X」 - 一個非常簡化版本如下:
<telerik:RadAjaxPanel ID="RadAjaxPanel1" runat="server"
LoadingPanelID="LoadingPanel1" RenderMode="Block">
<asp:LinkButton runat="server" ID="CausePostbackButton"
Style="display: none" />
</telerik:RadAjaxPanel>
使用案例#1 - 成功
- 該頁面加載和內控制 「X」 一個JavaScript計時器激活上LinkButton的 「CausePostbackButton」[EVAL(__ doPostBack(postbackButtonClientID, ''))回發; ]。 (所以,這模仿了用戶點擊按鈕)。
- 的AJAX調用發送至服務器和ñ秒後返回,並在頁面更新結果以特定的方式。
- 然後,用戶點擊LinkButton「btnShowItems」,該按鈕導致回發到服務器,並在幾秒鐘後返回並導致頁面以特定方式更新。
使用案例#2 - 失敗
該頁面加載和控制 「X」 中的一個JavaScript計時器激活上LinkButton的 「CausePostbackButton」 回發。 (所以,這模仿了用戶點擊按鈕)。
之前的服務器有時間作出反應,用戶點擊LinkButton的「btnShowItems」。
在火狐/ Firebug中,可以看到,先回後的事件被「中止」。第二個回傳事件完成(您可以看到所報告的時間),但該頁面未在視覺上更新。
如果「手動」按鈕,然後再次單擊不如預期,那麼工作。
我的想法
我知道,JavaScript是單線程的,因此,如果事件不能立即運行,那麼他們排隊。
我知道,如果一個計時器觸發排隊的事件,然後在第一個事件仍然排隊時觸發相同的事件,那麼其中一個事件(第二個事件)將被丟棄。
這就好像第一個事件正在被丟棄,但第二個事件不能再找到它的「通道」來寫入。
但是,如果我將「手動」鏈接按鈕更改爲圖像按鈕,則行爲不會改變。
任何想法是什麼問題(和理想的解決方案)?
提前
格里夫
爲什麼不直接在telerik論壇上發佈你的問題,或與他們的支持團隊的人聯繫?應該能夠快速接收答案。 –
迪克是正確的這是一個telerik問題不是ajax或javascript問題。如果您使用jQuery來進行ajax調用,您將可以更好地控制代碼。 – DidierDotNet