Ich habe eine AJAX-Funktion, um Daten aus dem abrufen und an HTML alle 1sec, der Grund, warum ich AJAX verwenden, weil ich eine Menge Daten abzurufen haben aus der Datenbank, so muss ich es mit Limit (100 Daten pro Limit) holen, also aktualisiere ich die AJAX-Funktion mit Intervall, das Problem ist, dass die angezeigten Daten immer die gleichen sind, weil vor der Funktion das Intervall zu aktualisieren Funktion wieder, gibt es eine Möglichkeit, dieses Problem zu lösen?warten auf Ajax-Funktion zu beenden, bis die Funktion erneut mit Intervall
JQuery AJAX Code:
var ctr = 0;
var pct = 0;
var total = 0;
var bnprd = "<?php echo $bonperiod;?>";
var bnsrt = "<?php echo $bonsort;?>";
var mybonperiod = "<?php echo $mybonperiod;?>";
var sc = '000';
var interval;
window.onload = function() {
{getDataNoBreak();}
};
interval = window.setInterval(function() {getDataNoBreak()}, 0);} //set the interval
function getDataNoBreak() {
jQuery(document).ready(function() {
jQuery.ajax({
url: "{{ url('panel/bonus/payviasc/getDataNoBreak') }}",
type: 'POST',
data: {_token :'{{ csrf_token() }}',counter : ctr, bonperiod: bnprd, bonsort: bnsrt},
dataType: "json",
success: function(data) {
if(ctr==0){ total = data[0].total;}
for(var i =0; i < data.length; i++) {
if(data[i].loccd) sc = data[i].loccd;
else sc = '000';
var htm = '';
htm += '<tr>';
htm += '<td data-label="MEMBER">'+ data[i].dfno +' </td>';
htm += '<td data-label="MEMBER NAME">'+ data[i].fullnm +' </td>';
htm += '<td data-label="SC">'+ sc +' </td>';
htm += '<td data-label="PERIOD">'+ mybonperiod +' </td>';
htm += '<td data-label="GRADE">'+ data[i].level +' </td>';
htm += '<td data-label="BONUS">'+ data[i].totbns +' </td>';
htm += '<td data-label="SIGNATURE"> </td>';
htm += '</tr>';
$("#isi").append(htm);
pct += 1;
var totalPct = (pct/total)*100;
$("#progress".html('<div class="progress-bar progress-bar-striped active" style="width:' + totalPct + '%"></div>'));
$("#message").html('Loading data...');
if (totalPct == 100) {
completed();
}
}
if(ctr < total-1) ctr+=101;
}
,
error: function(data) {
}
});
});
}
function completed() { //when the interval is finish
$("#message").html("Completed");
if(pageBreak == 0){
$('#payviabank').DataTable({
"paging": true,
"lengthChange": false,
"searching": true,
"ordering": false,
"info": true,
"autoWidth": false
});
}
window.clearInterval(interval);
}
so ist es eine verschachtelte Funktion? –
Es ist rekursiv; es nennt sich selbst, wenn es erfolgreich ist. Du könntest es auch komplett machen. –