我已经分配了两个等于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);
});
答案 0 :(得分:0)
您无法更新静态PHP变量,因为PHP脚本获取请求,工作和客户端的答案,因此会话已关闭。有两种方法可以解决这个问题。
方式1: 您必须将PHP连接到数据库。因此,您将向PHP文件发送请求,该文件更新数据库中的数字,因此值将被保护,也用于下一个请求。
Way2: 您可以创建PHP会话php.net link。因此,您将在会话中临时保存您的值。该会话将在一段时间后删除,也许那不是那个,你需要什么。会话类似于cookie。
两种方式都可以通过AJAX-Request工作。因此,您需要一个Javascript函数,它将您的请求发送到该PHP文件,该文件将更新数据库或会话。您还应该具有从数据库或会话中获取值的功能。
答案 1 :(得分:0)
是的 - 这不会像你所知的那样奏效。
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);
这是一个javascript + php。浏览器运行javascript和php在服务器上运行。它们在不同的时间运行并且是互斥的。这项工作彼此分开。
如果您尝试更新实时,您想要做的(可能)是使用ajax调用 http://api.jquery.com/jquery.ajax/
我发现api文档很适合参考,但不好的例子。
var jqXHR = $.ajax({
url: "target.aspx",
type: "GET",
dataType: "html",
}).done(function (data, status, jqXHR) {
$("#container").html(data);
alert("Promise success callback.");
}).fail(function (jqXHR,status,err) {
alert("Promise error callback.");
}).always(function () {
alert("Promise completion callback.");
})
这是一个很好的例子。谷歌“jqXHR”用于其他工作实例
答案 2 :(得分:0)
$(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);
});
在你的后端(本例中/get_prices.php
,更改它!)
<?php
$buy = 1;
$sell = 1;
echo json_encode(array(
'buy' => $buy,
'sell' => $sell,
));
exit;
答案 3 :(得分:0)
你可以对一个单独的php文件做一个简单的ajax get请求,该文件以json的形式返回数据:
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')
]
);
答案 4 :(得分:0)
使用相同的方法(进行轮询),您可以进行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;
?>
您可以在互联网上找到与此主题相关的大量信息(ajax和json)。