【问题标题】:why is the .ajaxError is executed twice?为什么 .ajaxError 被执行了两次?
【发布时间】:2014-01-23 18:53:11
【问题描述】:

我有一个这样的 jQuery 函数:

<script type="text/javascript">
    $( document ).ajaxError(function() {
        // Show only an alert();
        alert("An error occurred. Please try again after some time.");
    })

</script>

触发调用的按钮:

 <p:commandButton id="deleteButton"
     value="Delete Urls"
     styleClass="action-button"
     actionListener="#{controller.deleteUploadedUrls}"
     immediate="true"
     update="btnPanel messages"
     oncomplete="view.disableNextTabs();"/>

问题是警报显示了两次。

为什么提示会显示两次?

【问题讨论】:

  • 提交两个 AJAX 请求?鉴于您的非常模糊的代码示例,这很难说。
  • 您是否在页面内进行了多个 ajax 调用?
  • 显示两次,要么是两个ajax请求要么失败,要么你绑定了两次事件。
  • 选择命令按钮时出现错误。我将使用 commandButton 更新问题。
  • 有没有办法找出发出了哪些 ajax 请求?我是 jQuery 新手。

标签: jquery asp.net updatepanel


【解决方案1】:

您似乎使用了update panel,它是ASP.NET WebForm Framework 的一部分:

update="btnPanel messages"
oncomplete="view.disableNextTabs();"

update panel 经历了整个页面的生命周期。当您的页面加载完毕后,您的errorHandler 将第一次执行;它在更新后再次执行。

【讨论】:

  • 我完全删除了 'update="btnPanel messages"',但它仍然显示两次警报 :( 这是在 primefaces 中。
  • 这是一个 ajaxError 处理程序,因此您的 ajax 请求失败。打开您的开发工具并查看。
  • 我通过抛出异常服务器端而不是捕获它来使其失败。我正在为 ajax 调用上发生的错误实现异常处理。客户端是否有另一种方式可以在发生错误时显示一些消息?
猜你喜欢
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
相关资源
最近更新 更多