【问题标题】:Ajax call output and timeoutAjax 调用输出和超时
【发布时间】:2020-07-28 23:10:25
【问题描述】:

我已经构建了一个 ajax 计数器,它最多输出 6 位数字 - 例如“120398”并重复调用

function updateNumbers(){
    $.ajax({
    url: totalnumbers.ajaxurl,
    data: {
        action: 'numberstotal'
    },
    success: function (response) {
        var numbers = response.toString(10).replace(/\D/g, '0').split('').map(Number);
        //console.log(numbers);
        var newHTML = [];
        for (var i = 0; i < 6; i++) {
            newHTML.push('<span>' + numbers[i] + '</span>');
        }
        $('.counter').html(newHTML.join(""));
    }
    });
    setTimeout(updateMinutes, 5000);
}

updateNumbers();

到目前为止,这有效。

问题 1:

现在只有 4 位数字 (1234) 我仍然需要这样的总输出

<span>0</span>
<span>0</span>
<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>

我得到的是

<span>1</span>
<span>2</span>
<span>3</span>
<span>4</span>
<span>undefined</span>
<span>undefined</span>

问题 2:

当总数为 200000 时,我想退出 setTimeout-Function。但我不知道如何在设置超时之前从 ajax 调用中获取响应以进行检查。

帮助会很棒。看来我快到了:(

【问题讨论】:

    标签: arrays ajax timeout counter


    【解决方案1】:

    经过一番思考,我做到了:

    function updateNumbers(){
    $.ajax({
    url: totalnumbers.ajaxurl,
    data: {
        action: 'numberstotal'
        },
        success: function (response) {
            if (response < 20000) {
                var stringlength = response.length;
                var numbers = response.toString(10).replace(/\D/g, '0').split('').map(Number);
                var newNumbers = numbers;
                for (var i = stringlength; i < 7; i++) {
                    newNumbers.unshift(0);
                }
                var totalNumbers = $.map(newNumbers, function(num) {
                        return('<span>' + num + '</span>');
                    });
                $('.counter').html(totalNumbers.join(""));   
                setTimeout(updateNumbers, 5000);
                }
            else {
                var numbers = response.toString(10).replace(/\D/g, '0').split('').map(Number);
                var totalNumbers = $.map(numbers, function(num) {
                        return('<span>' + num + '</span>');
                    });
                $('.counter').html(totalNumbers.join(""));
            }
            } 
        });
    }
    updateNumbers();
    

    【讨论】:

      猜你喜欢
      • 2011-08-03
      • 1970-01-01
      • 2014-06-15
      • 2017-09-08
      • 2012-12-15
      • 2011-01-12
      • 2023-01-19
      • 1970-01-01
      • 2016-09-24
      相关资源
      最近更新 更多