Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将jQuery setInterval计时转换为递归setTimeout计时_Php_Jquery_Ajax - Fatal编程技术网

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....
        
}