我们的商店/网站有问题。 我们使用jQuery为一个模态激活AJAXToolkitExtender 问题是我们应该将按钮包装在一个更新面板中,该面板调用触发模态的jQuery。 我们的问题在于,出于某种原因,我们在Firefox和Chrome中获得了双重回复。反过来,当我们从服务器返回错误以在UI上显示时它会清除我们的购物车。我们希望通过jQuery获取调用的状态,而无需使用UpdatePanel。 UpdatePanels已经知道Firefox中的问题就是发回双重帖子。有没有人有一个直接的客户端站点解决方案或解决方案,我们不必使用更新面板来获取状态或我们对服务器的调用,并显示和隐藏更新面板。 我们的代码如下: 在ASCX中
<script type="text/javascript" language="javascript">
var ModalProgress = '<%= ModalProgress.ClientID %>';
</script>
<script type="text/javascript" src="/Scripts/jsUpdateProgress.js"></script>
<asp:Panel ID="panelUpdateProgress" runat="server" CssClass="updateProgress">
<asp:UpdateProgress ID="UpdateProg1" DisplayAfter="0" runat="server">
<ProgressTemplate>
<div id="processingOrderProgress">
<div id="processingOrderProgressText">
<%=GetLocaleResourceString("Museum.MuseumOrderConfirmationProcessingText")%>
</div>
<img src="../App_Themes/Museum/images/museumLayout/loading.gif" alt="Processing" />
</div>
</ProgressTemplate>
</asp:UpdateProgress>
</asp:Panel>
<ajaxToolkit:ModalPopupExtender ID="ModalProgress" runat="server" TargetControlID="panelUpdateProgress"
BackgroundCssClass="modalBackground" PopupControlID="panelUpdateProgress" />
这是来自jsUpdateProgress.js的JS
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(beginReq);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(endReq);
function beginReq(sender, args) {
// shows the Popup
$find(ModalProgress).show();
}
function endReq(sender, args) {
// hides the Popup
$find(ModalProgress).hide();
}
答案 0 :(得分:1)
我要关闭这个。我实际上使用我的按钮单击来触发或使用jQuery显示模态div。我不等待beginReq或endReq,我只是解雇模态。该页面发回一个帖子,因为在jQuery中我隐藏了文档上的div。现在,当回发后,模态消失了。我想你也可以在init init上做,但无论如何。这是我的解决方案。无需更新面板。
$(document).ready(function(){
$('#modalDiv').hide);
$('.submitBtn').click(function(){
$('#modalDiv').show();
});
//在页面发回帖子或重新加载模态后消失。
});
这很简单。
答案 1 :(得分:0)
您实际上不再需要添加UpdateProgess控件,因为jsUpdateProgress.js文件上的方法已足以捕获更新进度和完成。
我建议您使用HTML div弹出窗口替换UpdateProgress和ModalPopupExtender,并使用您的beginReq和endReq方法来显示它。为了更好的可用性,您应该添加一个cancelReq方法,允许您取消当前请求。