我在延迟点击按钮时遇到问题。我已经搜索了stackoverflow并且我已经找到了几个答案,并且使用setTimeout很容易,但是我无法让它在我正在处理的工作中运行。以下是代码示例:
AJAX在提交按钮单击
时将数据提交到数据库<script>
$(function () {
$('form').on('submit', function (e) {
$.ajax({
type: 'post',
url: 'post.php',
data: $('form').serialize(),
});
e.preventDefault();
});
});
</script>
推送代码
<script>
$(function() {
var pusher = new Pusher('pusher')
var activityChannel = pusher.subscribe('stream');
var activityMonitor = new PusherActivityStreamer(activityChannel, "#current");
var examples = new ExampleActivities(activityMonitor, pusher);
$("#broadcast").click(function(){
activityMonitor.sendActivity('broadcast');
});
$("#submit").click(function(){
activityMonitor.sendActivity('submit');
});
});
</script>
HTML按钮
<input id="submit" name="submit" type="submit" value="Submit" onclick="addMEM()"><br>
<button id="broadcast">Broadcast</button>
提交按钮上的onclick =“addMEM()”用于另一个脚本。这是一个非常繁忙的按钮。
所以正在发生的事情是我单击Submit并且ajax脚本将数据推送到post.php,后者将其提交到数据库。使用相同的提交单击,将触发推送代码,最终将提交的数据从数据库中拉回并将其广播给已连接的所有人。
我遇到的问题是提交将数据提交到数据库,它会触发同时从数据库中提取的Pusher。 75%的时间推送代码在提交提交数据之前尝试从数据库中提取数据。
我将setTimeout放在我能想到的任何地方,并且无法延迟Pusher代码。有什么建议?如果提交和广播按钮被延迟,则可以。如果单击Submit延迟AJAX代码或onclick = addMEM()
,则表示不正常很抱歉这么复杂。这是一个长项目的最后一步,如果我可以使用它,那么它就是所有的CSS,数据输入和数学。
答案 0 :(得分:2)
我建议将成功回调传递给 jQuery.ajax 方法,该方法会触发广播,如下所示:
$.ajax({
type: 'post',
url: 'post.php',
data: $('form').serialize(),
success: function () {
activityMonitor && activityMonitor.sendActivity('broadcast');
}
});
使用setTimeout的解决方案如下所示:
$("#broadcast").click(function(){
setTimeout(function () { activityMonitor.sendActivity('broadcast') }, 2000);
});