我想启动一个 AJAX 调用,在页面加载时首次刷新表格,但从那时起,需要它每 XX 秒运行一次,而且每当用户按下“刷新”按钮时也需要运行一次。
现在我不想制作相同代码的 3 个副本并将其绑定(bind)到 3 个不同的启动器,解决此问题的最佳方法是什么?
这里每 5 秒运行一次,但不会在页面加载或按钮单击时运行
<script type="text/javascript" language="javascript">
$(function() {
var prevAjaxReturned = true;
var xhr = null;
setInterval(function() {
if( prevAjaxReturned ) {
prevAjaxReturned = false;
} else if( xhr ) {
xhr.abort( );
}
xhr = $.ajax({
type: 'POST',
url: '../../plugins/MySQL/ajax_action.php',
data: {
action: 'refresh_rescap_reqs',
holidex: '<?php echo($_SESSION['Holidex']); ?>',
access: '<?php echo $_SESSION['Access']; ?>'
},
//dataType: 'json',
success: function(data) {
$('#Last20Requests').html(data);
prevAjaxReturned = true;
},
});
}, 5000); // 1000ms = 1 sec
});
</script>
谢谢
最佳答案
只需将函数绑定(bind)到变量,就可以重用它。
<script type="text/javascript" language="javascript">
$(function() {
var prevAjaxReturned = true;
var xhr = null;
var functionToRun = function() {
if( prevAjaxReturned ) {
prevAjaxReturned = false;
} else if( xhr ) {
xhr.abort( );
}
xhr = $.ajax({
type: 'POST',
url: '../../plugins/MySQL/ajax_action.php',
data: {
action: 'refresh_rescap_reqs',
holidex: '<?php echo($_SESSION['Holidex']); ?>',
access: '<?php echo $_SESSION['Access']; ?>'
},
//dataType: 'json',
success: function(data) {
$('#Last20Requests').html(data);
prevAjaxReturned = true;
},
});
};
setInterval(functionToRun, 5000); // 1000ms = 1 sec
$(document).on('click', functionToRun);
functionToRun();
});
关于javascript - JS/jQuery - 页面加载时启动功能,每 x 秒一次,点击时启动功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43609555/