JQUERY ajax帖子-多次点击,一次重新加载-这是可能的吗



我遇到了一个问题,不知道解决方案是什么。我希望在多次单击后只重新加载一次指定的div。现在,当我从下拉输入中向数据库添加新项目时,每次单击后都会重新加载指定的div,有时这会非常令人不安。当你想从列表中选择一个新项目,然后突然重置,你需要再次选择(。如果我点击添加新项目(有时我会选择4-5个新项目,而不是多选!(,然后每次点击后不刷新指定的div,只刷新一次指定的延迟,我该怎么做。

这是javascript部分的当前代码(现在添加新项后100毫秒后会刷新(。我希望有人能帮助我,或者给我一个如何解决这个问题的想法。非常感谢!

<script type="text/javascript">   
$('body').on('click',".addhplayer",function() {
var absidplayer = $('#abshidplayer').find(":selected").val();
var abstype = $('#abshtype').find(":selected").val();
var obj = $(this); // first store $(this) in obj
var absseasonid = $(this).attr('data-absseasonid');
var absidclub = $(this).attr('data-absidclub');
var absidmatch = $(this).attr('data-absidmatch');


//var dataString = 'abstype=' + abstype + '&addplayer=1&' + 'absidplayer=' + absidplayer + '&' + 'absidclub=' + absidclub + '&' + 'absidmatch=' + absidmatch + '&' + 'absseasonid=' + absseasonid;
$.ajax({
url: 'edit_absence.php',
type: 'POST',
timeout: 100,
data: {
addtype: abstype,
addhplayer: '1',
addidplayer: absidplayer,
addidclub: absidclub,
addidmatch: absidmatch,
addseasonid: absseasonid
},
success: function(response, textStatus, jqXHR){
$('.hpstatus').show();
$(".hpstatus").load(" .hpstatus");
$('#injur').show();
$("#injur").load(" #injur");

$("#homelineups").load(" #homelineups");
$("#awaylineups").load(" #awaylineups");

},
});
});
</script>

查看我对这个问题的旧回答:如何在每次表单输入字段更改时发送ajax请求?

基本上将事件代码包装为延迟函数,在多次调用时,如果延迟未达到,它将取消之前计划的ajax调用

编辑>在您的特定代码上:

var changeTimer = false;

function yourSpecificEventCode(){
var absidplayer = $('#abshidplayer').find(":selected").val();
var abstype = $('#abshtype').find(":selected").val();
var $o = $(this); // first store $(this) in obj
var absseasonid = $o.attr('data-absseasonid');
var absidclub = $o.attr('data-absidclub');
var absidmatch = $o.attr('data-absidmatch');

$.ajax({
url: 'edit_absence.php',
type: 'POST',
timeout: 100,
data: {
addtype: abstype,
addhplayer: '1',
addidplayer: absidplayer,
addidclub: absidclub,
addidmatch: absidmatch,
addseasonid: absseasonid
},
success: function(response, textStatus, jqXHR){
$('.hpstatus').show().load(" .hpstatus");
$('#injur').show().load(" #injur");
$("#homelineups").load(" #homelineups");
$("#awaylineups").load(" #awaylineups");
},
});
}

$('body').on('click',".addhplayer",function() {
if(changeTimer !== false) clearTimeout(changeTimer);
let t = this ;
changeTimer = setTimeout(function(){
yourSpecificEventCode.call( t ) ;
changeTimer = false;
},300);
});

最新更新