Php 将jQuery setInterval计时转换为递归setTimeout计时
我这里有一个队列管理系统的代码片段,它根据屏幕上允许显示的窗口数量从数据库中动态获取数据Php 将jQuery setInterval计时转换为递归setTimeout计时,php,jquery,ajax,Php,Jquery,Ajax,我这里有一个队列管理系统的代码片段,它根据屏幕上允许显示的窗口数量从数据库中动态获取数据 var elementArray; function fetchPayment() { elementArray = new Array(); $('.win_id').each(function() { // here's the moneyshot elementArray.push(this);
var elementArray;
function fetchPayment() {
elementArray = new Array();
$('.win_id').each(function() {
// here's the moneyshot
elementArray.push(this);
});
doAjax(0);
}
function doAjax(param) {
if (typeof elementArray[param] === 'undefined') {
var win_id = 0;
} else {
var win_id = elementArray[param].value;
}
$.ajax({
type: "GET",
dataType: 'json',
// async: false,
url: "<?php echo base_url();?>queue/getCurrentTransaction/" + win_id,
success: function(data) {
param++;
if (param <= elementArray.length) {
$('.names-' + win_id).empty();
$('.names-' + win_id).append("<div class='pname'>" + data.customer_name + '<li>' + data.ref_code + '</li></div>');
doAjax(param);
} else {
console.log("!");
}
},
error: function(data) {
param++;
$('.names-' + win_id).empty();
$('.names-' + win_id).append("<div class='pname'><li></li></div>");
doAjax(param);
}
});
}
var元素数组;
函数fetchPayment(){
elementArray=新数组();
$('.win_id')。每个(函数(){
//给你钱
elementArray.push(这个);
});
doAjax(0);
}
函数doAjax(param){
if(元素数组[param]的类型=='undefined'){
var win_id=0;
}否则{
var win_id=elementArray[param]。值;
}
$.ajax({
键入:“获取”,
数据类型:“json”,
//async:false,
url:“队列/getCurrentTransaction/”+win_id,
成功:功能(数据){
param++;
如果(参数在您的
function doAjax(param) {
if (typeof elementArray[param] === 'undefined') {
var win_id = 0;
} else {
var win_id = elementArray[param].value;
}
$.ajax({
type: "GET",
// etc....
}
您在两个位置有doAjax(param);
,一个用于成功:
,另一个用于错误:
将两处的doAjax(param);
替换为:
setTimeout(doAjax.bind(null,param),500);
注意:
我不确定,但看起来您正在尝试执行“实时数据”
,因此我的建议是查看WebSocket
(),托管您自己的,或者最终托管Pusher.com()之类的提供商。您试图实现什么?似乎您正在尝试抵消ajax调用的加载(服务器端处理)页面上的每个可用元素/付款。我想做的是:每隔2秒,我需要从数据库中获取每个元素/付款窗口的数据。前一个请求是否已完成或是否可以同步发生?我猜是同步的。
function doAjax(param) {
if (typeof elementArray[param] === 'undefined') {
var win_id = 0;
} else {
var win_id = elementArray[param].value;
}
$.ajax({
type: "GET",
// etc....
}