当从更新面板(ASP.NET Web 表单)内部触发时,为什么我的 jQuery 单击事件没有被调用?

Why aren't my jQuery click events being called when triggered from inside of an update panel (ASP.NET Web Forms)?

我正在努力追踪 IE11 和 Edge 中一个难以捉摸的错误。我注意到 Chrome 和 Edge 之间的网络调用存在差异,我不确定这是否只是浏览器开发工具显示流量的方式之间的差异,或者它是否表明某些事情实际上正在发生不在 Chrome.

中的边

以下屏幕截图来自Edge中的开发工具,在页面加载期间记录。

似乎对服务器的某些请求未被视为已通过身份验证,因此它被重定向到登录页面。 Chrome 中的相同页面加载顺序并未显示 - 它只有一页请求。我的第一个问题是 - 有没有一种方法可以使用 Edge 开发工具追踪是哪个东西在发出特定请求?或者这是我需要担心的事情,如果它是预期的行为?

关于我要解决的错误的一些背景知识

该页面使用 UpdatePanels 和 jQuery ajax 两者向服务器发出请求。相关的 jQuery ajax 调用是在更新面板内的对象上触发的点击事件中进行的。我已经验证这些点击事件不会触发回发。点击处理程序似乎执行得很好(大部分时间),但错误是有时它们似乎根本没有执行 - none 我的 console.log 语句出现在控制台中, 在您再次单击之前什么也没有发生(除了页面跳动一点)。每隔一次点击似乎都有效。当页面上加载了 lot 数据时似乎会发生这种情况(请注意开发工具中第一个请求的加载时间)。

我已确保在每次更新面板回发后使用

重新绑定更新面板内对象上的点击事件
Sys.WebForms.PageRequestManager.getInstance().add_endRequest

该站点使用表单身份验证。我正在测试的站点上只有一台服务器 - 不涉及负载平衡器。

此外 - 在任何人建议之前 - 我们正在尝试远离更新面板,但我们还没有完全准备好停用这个严重依赖它们的页面。这也是我的首选解决方案:)

您提到相关网页很大
因此,当您第一次快速单击这样的客户端 hyperlink/button 时,JavaScript 加载并不总是完成,这意味着会触发常规的 http GET 请求,您可以在开发者工具。
您还将在其他浏览器中看到这一点。

尝试找到一种方法在加载完成之前禁用这些客户端hyperlinks/buttons。

您最初可以通过以下方式禁用它们:

<a class="clientsideButton" href="#" onclick="javascript:return false">click here</a>

然后启用它们。
不要忘记在部分回发后再次重新绑定它们!

<script>
$(function() {
    $(".clientsideButton").on("click", 
        function() { 
            // Make AJAX request.
    });
});
</script>