gpt4 book ai didi

javascript - JSF 在 onClick 事件之前执行 Ajax

转载 作者:行者123 更新时间:2023-11-30 18:03:07 27 4
gpt4 key购买 nike

我有一个 Javascript 函数,它根据文档中的一些隐藏字段更改某些元素的位置,这些隐藏字段使用 ajax 定期更新。

问题:

由于 javascript 函数 (onclick) 在 Ajax(重新加载隐藏字段所在的元素)之前执行,因此应该改变位置的元素总是落后一圈。

我想要实现的目标:

如果在 onclick 事件之前执行 ajax 重新加载,问题将得到解决,因此对隐藏字段的引用将是正确的。 (而不是在后面转弯)

这是否有可能以任何方式或是否有其他解决方案来解决这个问题??

代码:

调用:

                <h:commandButton id="dice" onclick="animate()" alt="W&uuml;rfel mit einer Eins" image="resources/img/wuerfel1.png" action="#{spiel.dice()}" tabindex="4" title="W&uuml;rfel mit einer Eins">
<f:ajax render="gameinfo" />
</h:commandButton>

Javascript 函数:

    function animate() {
var newPlayer1 = document.getElementById('player1score').value;
var newPlayer2 = document.getElementById('player2score').value;
// Spieler 1 Animation
$("#player1").fadeOut(700, function() {
$("#player1").appendTo(newPlayer1);
$("#player1").fadeIn(700);
});
// Spieler2 Animation
$("#player2").delay(1400).fadeOut(700, function() {
$("#player2").appendTo(newPlayer2);
$("#player2").fadeIn(700);
});
}

最佳答案

你应该使用 f:ajaxonevent

  <h:commandButton id="dice" alt="W&uuml;rfel mit einer Eins" image="resources/img/wuerfel1.png" action="#{spiel.dice()}" tabindex="4" title="W&uuml;rfel mit einer Eins">
<f:ajax render="gameinfo" onevent="animate" />
</h:commandButton>

将您的animate 函数更改为

function animate(data) {
if (data.status === 'success') {
//your original code goes here...
}
}

此外:阅读 BalusC 的回答:Proccess onclick function after ajax call

关于javascript - JSF 在 onClick 事件之前执行 Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16443866/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com