You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将每2秒刷新的JavaScript价格变量值传递给PHP变量

核心问题说明

你当前的写法错误本质是搞混了PHP和JavaScript的执行顺序,你写的<?php $results = "<script>document.write(results)</script>"?>完全无效,直接删掉即可:

  • PHP是服务端语言,在页面返回给用户浏览器之前就已经全部执行完毕,不可能直接读取到浏览器端后续才运行的JavaScript变量
  • 上述代码只是把<script>document.write(results)</script>这段纯文本字符串赋值给了PHP的$results变量,不会执行拿到JS的实时价格值

解决方案

要把客户端实时更新的价格传给PHP,需要通过AJAX请求把JS变量主动发送给后端PHP接口,修改步骤如下:

第一步:修改JavaScript代码,新增请求传递价格

你可以直接复用现有XMLHttpRequest逻辑,在拿到Draco价格的回调里新增请求即可,修改后的display函数如下:

function display() {
client.get('https://api.mir4global.com/wallet/prices/draco/daily', function(response) {
var retorno = JSON.parse(response);
preco = retorno.Data[retorno.Data.length - 1].USDDracoRate
var input = document.querySelector('input');
valor = input.value;
localStorage.setItem('dracoVlr1', input.value);
const formattedPrice = parseFloat(preco).toFixed(4)
document.title = 'Draco' + ' - $' + formattedPrice;
document.getElementById('dracoVlr').innerHTML = "Preço do Draco" + ' - $' + formattedPrice;

// 新增:把格式化后的价格发送给后端PHP
const sendPriceReq = new XMLHttpRequest()
sendPriceReq.open("POST", "save_draco_price.php", true)
// 设置请求头,确保PHP可以正常接收POST参数
sendPriceReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
sendPriceReq.send("draco_price=" + formattedPrice)

// 可选:接收PHP返回的处理结果
sendPriceReq.onreadystatechange = function() {
  if (sendPriceReq.readyState == 4 && sendPriceReq.status == 200) {
    console.log("价格已同步到后端:" + sendPriceReq.responseText)
  }
}

});

client2.get('https://api.binance.com/api/v3/ticker/price?symbol=BUSDBRL', function(response) {
    
    var binance = JSON.parse(response);
    console.log(binance.price)
    document.getElementById('dracodolares').innerHTML = 'Total em Dólares: $' + (valor * preco).toFixed(4)
    document.getElementById('dracoreais').innerHTML = 'Total em Reais: R$' + ((valor * preco)*binance.price).toFixed(4)

});

client3.get('https://api.binance.com/api/v3/ticker/price?symbol=EURBUSD', function(response) {
    
    var binance3 = JSON.parse(response);
    console.log(binance3.price)
    document.getElementById('dracodolares').innerHTML = 'Total em Dólares: $' + (valor * preco).toFixed(4)
    document.getElementById('dracoeuro').innerHTML = 'Total en Euros: EUR' + ((valor * preco)*binance3.price).toFixed(4)
});

}

第二步:新增PHP接收文件(示例命名为save_draco_price.php)

在这个文件里你可以拿到实时价格,完成你需要的存储、计算等业务逻辑:

<?php
// 接收JS传递的价格参数
$results = isset($_POST['draco_price']) ? $_POST['draco_price'] : 0;

// 这里写你自己的业务逻辑,比如存数据库、写缓存、计算手续费等
// 示例:存入SESSION,方便站点内其他PHP页面调用这个实时价格
session_start();
$_SESSION['current_draco_price'] = $results;

// 可选:返回结果给前端
echo $results;
?>

注意事项
  • 如果站点内其他PHP页面需要使用这个实时价格,直接在对应页面开启SESSION后读取$_SESSION['current_draco_price']即可
  • 价格每2秒刷新一次,后端收到的价格也会同步每2秒更新,符合你的定时刷新需求

内容的提问来源于stack exchange,提问作者Robert Nixon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:24:04