gpt4 book ai didi

javascript - asp.net 按钮导致两次异步回发

转载 作者:行者123 更新时间:2023-11-28 07:35:39 25 4
gpt4 key购买 nike

此按钮导致两次回发。

<asp:UpdatePanel ID="asdd" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:ImageButton ID="imgbtnNew" class="imgbtnNew" runat="server" CausesValidation="false"
ImageUrl="~/Administrative/images/fullpage.gif" OnClick="imgbtnNew_Click" />
</ContentTemplate>
</asp:UpdatePanel>

此代码显示了我如何检查此行为

function pageLoad()
{
alert("Page load");
var manager = Sys.WebForms.PageRequestManager.getInstance();
manager.add_beginRequest(OnBeginRequest);
manager.add_endRequest(OnEndRequest);
}
function OnBeginRequest(sender, args)
{

var postBackElement = args.get_postBackElement();
alert("Begin" + postBackElement.id);
}
function OnEndRequest(sender, args)
{
alert("end req caled!");
var postBackElement = args.get_postBackElement();
if (postBackElement.className == 'imgbtnNew')
{
$get('upc1').style.display = "block";
}
}

另一个问题是,仅当第二次加载页面时单击按钮时才会发生此行为。它显示开始和结束请求的单个警报,但第二次单击该按钮时,它显示开始请求的两个警报,并且不会显示结束请求的警报,并且每次单击都会执行一次单击事件处理程序。因此,该按钮在第一次被单击时行为正常,但此后就不再正常。

最佳答案

我终于明白了。 endRequest 和 beginRequest 处理程序已添加但未从 PageRequestManager 实例中删除,这就是开始请求一次又一次被调用的原因。 EndRequest 处理程序未执行,因为我在 OnEndRequest 方法中使用 get_postBackElement() 引发了错误,因此请求没有结束并且更新进度控制持续显示。

关于javascript - asp.net 按钮导致两次异步回发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28623840/

25 4 0