尝试刷新分配给PHP变量的JavaScript变量

尝试刷新分配给PHP变量的JavaScript变量,javascript,php,jquery,Javascript,Php,Jquery,我已经分配了两个变量,它们等于可以随时更改的PHP变量。我试图每5秒更新一次div;例如,更新号码。我假设这不起作用,因为PHP不会在页面加载后再次运行。最好的办法是什么?如果有必要,我不介意链接到另一个页面。这是我的密码: $(document).ready(function() { var buyprice = <?php echo $coinTicker->price($coin2[1] , 'buy'); ?>; var sellprice = <

我已经分配了两个变量,它们等于可以随时更改的PHP变量。我试图每5秒更新一次div;例如,更新号码。我假设这不起作用,因为PHP不会在页面加载后再次运行。最好的办法是什么?如果有必要,我不介意链接到另一个页面。这是我的密码:

$(document).ready(function() {
    var buyprice = <?php echo $coinTicker->price($coin2[1] , 'buy'); ?>;
    var sellprice = <?php echo $coinTicker->price($coin2[1] , 'sell'); ?>;
    $('#currentbuyprice').html(buyprice);
    $('#currentsellprice').html(sellprice);
    setInterval(function() {
    var buyprice = <?php echo $coinTicker->price($coin2[1] , 'buy'); ?>;
    var sellprice = <?php echo $coinTicker->price($coin2[1] , 'sell'); ?>;
    $('#currentbuyprice').html(buyprice);
    $('#currentsellprice').html(sellprice);
   }, 5000);
}); 
$(文档).ready(函数(){
var买入价格=;
var sellprice=;
$('#currentbuyprice').html(buyprice);
$('#currentsellprice').html(sellprice);
setInterval(函数(){
var买入价格=;
var sellprice=;
$('#currentbuyprice').html(buyprice);
$('#currentsellprice').html(sellprice);
}, 5000);
}); 

您无法更新静态PHP变量,因为PHP脚本会向客户端获取请求、工作和应答,因此会话将关闭。有两种方法可以解决这个问题

方式1: 您必须将PHP连接到数据库。因此,您将向一个PHP文件发送一个请求,该文件将更新数据库中的数字,因此这些值也将被安全地保存在下一个请求中

方式2: 您可以创建PHP会话。因此,您将在会话中临时保存您的值。该会话将在一段时间后删除,可能这不是您需要的。会话类似于cookie


这两种方法都通过AJAX请求工作。因此,您需要一个Javascript函数,该函数将您的请求发送到该PHP文件,该文件将更新数据库或会话。您还应该有一个从数据库或会话中获取该值的函数。

是的-正如您所知,这不起作用

  setInterval(function() {
    var buyprice = <?php echo $coinTicker->price($coin2[1] , 'buy'); ?>;
    var sellprice = <?php echo $coinTicker->price($coin2[1] , 'sell'); ?>;
    $('#currentbuyprice').html(buyprice);
    $('#currentsellprice').html(sellprice);
   }, 5000);

这是一个很好的例子。Google“jqXHR”对于其他工作示例

您可以对一个单独的php文件发出一个简单的ajax get请求,该文件以json格式返回数据:

$(document).ready(function() {
    var buyprice = <?php echo $coinTicker->price($coin2[1] , 'buy'); ?>;
    var sellprice = <?php echo $coinTicker->price($coin2[1] , 'sell'); ?>;
    $('#currentbuyprice').html(buyprice);
    $('#currentsellprice').html(sellprice);

    setInterval(function() {
        $.get('/get_prices.php', function( data ) {
            buyprice = data.buy;
            sellprice = data.sell;
            $('#currentbuyprice').html(buyprice);
            $('#currentsellprice').html(sellprice);
        }, "json" );
   }, 5000);
}); 
setInterval(function() {
    $.get('/prices.php', function(data){
        $('#currentbuyprice').html(data.buyprice);
        $('#currentsellprice').html(data.sellprice);
    });
}, 5000);
prices.php:

//code that creates $cointTicker and $coin vars goes here
header('Content-Type: application/json');
echo json_encode(
         [
             'buyprice'  => $coinTicker->price($coin2[1] , 'buy'),
             'sellprice' => $coinTicker->price($coin2[1] , 'sell')
         ]
      );
使用相同的方法(进行轮询),您可以进行ajax查询

<!DOCTYPE html>
<html>
<head>
    <title>

    </title>
    <meta charset="utf-8" />
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js" charset="UTF-8"></script>
</head>
<body>
    <script>


    function send(){
        $.ajax({
            url: "a.php/",
            type: 'GET',
            success: function(res) {
                var myVars = JSON.parse(res);
                console.log(myVars[0].buyprice);
                $('#currentbuyprice').html(myVars[0].buyprice);
                $('#currentsellprice').html(myVars[0].sellprice);
            }
        });
    }
    setInterval(function(){ send() }, 3000);
    </script>

    currentsellprice:
    <div id="currentbuyprice">

    </div>
    currentsellprice:
    <div id="currentsellprice">

    </div>
</body>

函数send(){
$.ajax({
url:“a.php/”,
键入:“GET”,
成功:功能(res){
var myVars=JSON.parse(res);
console.log(myVars[0].buyprice);
$('#currentbuyprice').html(myVars[0].buyprice);
$('#currentsellprice').html(myVars[0].sellprice);
}
});
}
setInterval(函数(){send()},3000);
当前售价:
当前售价:
这里是服务器的最小部分

<?php
    $out = "[";
    $out .= '{"buyprice":"'. time(). '",';
    $out .= '"sellprice":"'. time()/2 . '"}'; 
    $out .="]";
    echo $out; 
?>


您可以在internet上找到许多与此主题相关的信息(ajax和json)。

查找ajax。记住谷歌是你的朋友。是的,使用ajax发送请求并获得json格式的响应。有人说过ajax吗?
<!DOCTYPE html>
<html>
<head>
    <title>

    </title>
    <meta charset="utf-8" />
    <meta name="description" content="">
    <meta name="keywords" content="">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js" charset="UTF-8"></script>
</head>
<body>
    <script>


    function send(){
        $.ajax({
            url: "a.php/",
            type: 'GET',
            success: function(res) {
                var myVars = JSON.parse(res);
                console.log(myVars[0].buyprice);
                $('#currentbuyprice').html(myVars[0].buyprice);
                $('#currentsellprice').html(myVars[0].sellprice);
            }
        });
    }
    setInterval(function(){ send() }, 3000);
    </script>

    currentsellprice:
    <div id="currentbuyprice">

    </div>
    currentsellprice:
    <div id="currentsellprice">

    </div>
</body>
<?php
    $out = "[";
    $out .= '{"buyprice":"'. time(). '",';
    $out .= '"sellprice":"'. time()/2 . '"}'; 
    $out .="]";
    echo $out; 
?>