【问题标题】:Stop ajax request using javascript/jquery - JSF使用 javascript/jquery 停止 ajax 请求 - JSF
【发布时间】:2015-11-23 08:03:06
【问题描述】:

我有以下代码

<rich:calendar enableManualInput="true" value="#{myBean.myDate}" 
    oninputblur="validateDate(this);">

    <a4j:ajax event="change" listener="#{myController.method()}" render="myPanel"></a4j:ajax>

    <a4j:ajax event="inputchange" listener="#{myController.method()}" render="myPanel"/>

</rich:calendar>

如您所见 oninputblur 我正在调用一个 javascript 函数。如果validateDate 返回false,我不想向服务器发送ajax 请求。我该如何处理?

【问题讨论】:

  • 你基本上忽略了函数的返回值。
  • 如何利用validateDate的返回值来停止ajax请求?
  • 在服务器端接收到 Ajax 调用,即使 validateDate() 未完成。所以从 js 函数返回 false 在这里没有帮助。有没有其他解决方案来停止 ajax ?谢谢
  • @BalusC a4j:ajax 不会监听相同的事件,在本例中,无论如何都会在验证之前发送请求。

标签: javascript ajax richfaces jsf-2.2


【解决方案1】:

在 a4j:ajax 上使用 @onbeforesubmit(参见 docs)。如果返回false ajax 请求将被取消。

在您的示例中,请求在验证之前触发(因为 change 事件在 blur 之前触发 - 尽管这看起来取决于浏览器)

【讨论】:

  • 我从rich:calendar 中删除了oninputblur 属性并将onbeforesubmit=validateDate(this); 放入a4j:ajax 中。当它return false; 时,它无论如何都会将 ajax 调用发送到服务器。
  • 您确实需要了解函数的工作原理。 onbeforesubmit 必须返回 false,并且您不会返回任何内容。 validateDate(this) 转换为 validateDate(this); return undefined;
  • 抱歉打扰了。不要输入onbeforesubmit=validateDate(this);,而是输入onbeforesubmit="return validateDate(this);"。这样,它实际上是从 validateDate 返回返回的标志。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 2011-09-05
  • 2018-03-20
相关资源
最近更新 更多