Javascript变量不从PHP更新

时间:2017-07-18 00:06:19

标签: javascript php html

如何在每次运行脚本时更新我的​​javascript函数中的变量?该变量获取一个PHP字符串,然后它似乎存储它并且在页面刷新完成之前不会更新该值。

SCRIPT:

setInterval(function () {
        var options = {
            useEasing : true, 
            useGrouping : true, 
            separator : ',', 
            decimal : '.', 
        };
        var value123 = <?php echo $amount22; ?>;
        var value234 = <?php echo $unpaidbtc; ?>;
        var demo = new CountUp("counter", value123, value234, 10, 1, options);
        demo.start();
      }, 5000);

基本上它在页面中抓取我的php的$unpaidbtc值。这个脚本将每5秒运行一次,但不是使用php拥有的新值进行更新,而是使用它抓取的第一个值,并且永远不会更新到新的PHP字符串。

有没有让脚本更新并自动从页面中重新获取PHP脚本?

示例:启动时$unpaidbtc = 10,5秒后$unpaidbtc = 15,但计数器只能达到10.如何在不刷新页面和内容的情况下获取新值,谢谢!

1 个答案:

答案 0 :(得分:1)

从评论中我认为我理解你想要的东西:

var ajax = new XMLHttpRequest();

function getValues(callback) {
    ajax.abort();

    ajax.open("GET", "index.php?showme=1", true);
    ajax.send();

    ajax.onreadystatechange = function() {
        if (ajax.readyState == 4 && ajax.status == 200)
            callback(JSON.parse(ajax.responseText));
    };
}

setInterval(function() {
    var options = {
        useEasing: true,
          useGrouping: true,
          separator: ',',
          decimal: '.',
    };

    getValues(function(obj) {
        var value123 = obj.amount22;
        var value234 = obj.unpaidbtc;
        var demo = new CountUp("counter", value123, value234, 10, 1, options);
        demo.start();
    });

}, 5000);

只使用一个PHP页面就可以逃脱,我们假设它被称为index.php

<?php

//do your database calls to get $amount22 and $unpaidbtc

if (isset($_GET['showme'])) {

    echo json_encode(array(
        'amount22'  => $amount22,
        'unpaidbtc' => $unpaidbtc
    ));
    exit;
}

//the rest of your page (with the html/javascript)

请注意,如果您的网页未被调用index.php,则需要更改此行:

ajax.open("GET", "index.php?showme=1", true);