我正在尝试刷新我拥有的表,因为变量在不断更新,我想每隔几秒重新更新一次这些变量。我已经通过为表提供id并为其创建div来完成代码。代码将解释我的实际情况。提前致谢 ! 已编辑:已添加Var Table和Var Refresher。但是代码仍然不会重新加载我的表!任何想法?
test.php的
<html>
<head>
<script type='text/javascript'>
var table = $('#tableID');
// refresh every 5 seconds
var refresher = setInterval(function() {
table.load("1103242B/processing/js.php");
}, 5000);
setTimeout(function() {
clearTimeout(refresher);
}, 1800000);
</script>
</head>
<body>
<?php include_once'js.php'; ?>
</body>
</html>
JS.php
<?php
require_once 'connect.php';
include 'start.php';
include 'functions.php';
header("Cache-Control: no-cache,no-store");
$query = "SELECT * FROM opentrades"; //You don't need a ; like you do in SQL
$result = mysql_query($query);
echo "<table border = '1px' id='tableID'>"; // start a table tag in the HTML
echo "<tr><td>" . "Order Number" . "</td><td>" . "Selection" . "</td><td>" . "Date" . "</td><td>" . "Type" . "</td><td>" . "Size" . "</td><td>" . "Bid Price" . "</td><td>" . "Offer Price" . "</td><td>" ."Stop Loss" . "</td><td>" . "Take Profit" . "</td><td>" ."Profit/Loss(USD)"."</td><td>" ."Close"."</td></tr>" ; //$row['index'] the index here is a field name
while($row = mysql_fetch_assoc($result)){ //Creates a loop to loop through results
if ($row['selection']=='eur/usd')// TO RETRIEVE BID AND OFFER FOR EACH ROW
{
$bidpricepl=$bid;
$offerpricepl=$bid1;
}
elseif ($row['selection']=='usd/jpy')
{
$bidpricepl=$bid2;
$offerpricepl=$bid3;
}
elseif ($row['selection']=='usd/cad')
{
$bidpricepl=$bid4;
$offerpricepl=$bid5;
}
elseif ($row['selection']=='eur/jpy')
{
$bidpricepl=$bid6;
$offerpricepl=$bid7;
}
elseif ($row['selection']=='eur/chf')
{
$bidpricepl=$bid8;
$offerpricepl=$bid9;
}
elseif ($row['selection']=='gbp/usd')
{
$bidpricepl=$bid10;
$offerpricepl=$bid11;
}
elseif ($row['selection']=='aud/usd')
{
$bidpricepl=$bid12;
$offerpricepl=$bid13;
}
elseif ($row['selection']=='usd/chf')
{
$bidpricepl=$bid14;
$offerpricepl=$bid15;
}
if ($row['type']=="buy")
{
$minipipskiller='10';
$offeropen=$row['offerprice'];
$pips=$offerpricepl-$offeropen;
$closedb=$offeropen;
$pips1=round($pips, 6);
$pips2 = str_replace('.', '', $pips1);
if ($pips2<0)
{
$pips2 = str_replace('-', '', $pips2);
$pips2 = ltrim($pips2, '0');
$pips2 = -1 * abs($pips2);
}
else {
$pips2 = ltrim($pips2, '0');
}
$pips3=$pips2/$minipipskiller;
}// PIP COUNTING
elseif ($row['type']=="sell")//FOR PIP COUNTING
{
$minipipskiller='10';
$bidopen=$row['bidprice'];
$pips=$bidopen-$bidpricepl;
$closedb=$bidopen;
$pips1=round($pips, 6);
$pips2 = str_replace('.', '', $pips1);
if ($pips2<0)
{
$pips2 = str_replace('-', '', $pips2);
$pips2 = ltrim($pips2, '0');
$pips2 = -1 * abs($pips2);
}
else {
$pips2 = ltrim($pips2, '0');
}
$pips3=$pips2/$minipipskiller;
}
$ticksize= "0.0001";// FOR PROFIT AND LOSS
$lot1 = "100000";
$sizecalc=$row['size'] * $lot1;
if ($row['type']=="buy")
{
$profitandloss=$sizecalc*$ticksize*$pips3; //per TRADE
}
if ($row['type']=="sell")
{
$profitandloss=$sizecalc*$ticksize*$pips3; //per TRADE
}
$zero= '0';
if($profitandloss<$zero) {
$profitText = "<div style=\"color: red;\">$profitandloss</div>";
} elseif ($profitandloss>$zero) {
$profitText = "<div style=\"color: green;\">$profitandloss</div>";
}
$sum+= $profitandloss;
echo "<tr><td>" . $row['trade_id'] .
"</td><td>" . $row['selection'] .
"</td><td>" . $row['date'] .
"</td><td>" . $row['type'] .
"</td><td>" . $row['size'] .
"</td><td>" . $row['bidprice'] .
"</td><td>" . $row['offerprice'] .
"</td><td>" . $row['stoploss'] .
"</td><td>" . $row['takeprofit'] .
"</td><td>" . $profitText .
"</td><td><a href ='delete.php?id=".
$row['trade_id']."'>X</a>
</td></tr>";
$profitandloss=0;
if($sum<$zero) {
$sumText = "<div style=\"color: red;\">$sum</div>";
} elseif ($sum>$zero) {
$sumText = "<div style=\"color: green;\">$sum</div>";
}
}
echo "</table><br>";
?>
答案 0 :(得分:3)
我认为setInterval
jQuery.load
是您正在寻找的
var table = $("#tableID");
// refresh every 5 seconds
var refresher = setInterval(function() {
table.load("/path/to/js.php");
}, 5000);
或者用
缩短它var refresher = setInterval(table.load.bind(table, "/path/to/data"), 5000);
如果你想停止刷新数据,(例如)说用户长时间打开页面
// stop refreshing after 30 minutes
setTimeout(function() {
clearTimeout(refresher);
}, 1800000);
如果您的数据加载需要一段时间,您可能只想在加载数据后刷新X秒。你可以使用setTimeout
var table = $("#tableID");
var refresh = function() {
table.load("/path/to/js.php", function() {
setTimeout(refresh, 5000);
});
};
refresh();
答案 1 :(得分:2)
只是我的2美分,但这似乎是一个不必要的负载来打你的数据库。 我会考虑像触发器这样的东西,写一些像
那样便宜的东西bool = timestamp > now;
or
if(myhash != tablehash)
因此,您的长轮询只是询问某些内容是否已更改且未运行查询
答案 2 :(得分:0)
更改
$('#tableID').replaceWith($(data));
向
$('#tableID').replaceWith(data);
虽然你要做的是将一些东西加载到元素中。所以在语义上使用.load()听起来更好。
$('#tableID').load('some/url/file.php')