2013-08-20 63 views
1

我试图刷新表格,因为变量里有不断更新的内容,我想每隔几秒重新更新一次这些变量。我已经完成了代码,通过给表格一个id并为它创建一个div。该代码将解释我实际上。提前致谢 !添加Var Table,Var Refresher,表id是tableID。但代码仍然不会重新加载我的表!任何想法?每x秒自动刷新一次HTML表格

test.php的

 <html> 
    <head> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
     <script type='text/javascript'> 
    var table = $('#tableID'); 

    // refresh every 5 seconds 


    // var refresher = setInterval(function() { table.load("refreshable"); }, 5000); 
    var refresher = setInterval(table.load.bind(table, "refreshable.php"), 5000); 
    //var refresh = setInterval($("#tableID")).load('refreshable.php'),3000); 

    setInterval(function() { 
     clearInterval(refresher); 
    }, 1800000); 


    </script> 
    </head> 
    <body> 
    <div id="tableID"> 
    <?php include_once'refreshable.php'; ?> 
    </div> 
    </body> 
    </html> 

refreshable.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' >"; // 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>"; 



?> 

enter image description here

enter image description here

+0

'table.load.bind'做什么? – Saurabh

+0

在按F12时,在Firefox或Chrome中,应显示控制台。你能看到xhr要求吗? – HMR

+2

我认为这个表应该包含在test.php中,所以''table border ='1px'id ='tableID'>'代码永远不会被重载。你想重新加载的是它里面的数据。在你的Javascript中,你可以做'$(“#tableID”)。load('refreshable.php');'(当然,'

'标签,包括'
'应该不可刷新.php )。 –

回答

1

由于Ajelandro在评论中指出,你可以尝试,以填补一个div与刷新表:

我感动的脚本,并添加文档类型(HTML5)

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js> 
    </script> 
</head> 
<body> 
<div id="tableID"> 
<?php include_once'refreshable.php'; ?> 
</div> 
    <script type='text/javascript'> 
     var table = $('#tableID'); 
    // refresh every 5 seconds 
    var refresher = setInterval(function(){ 
     table.load("refreshable.php"); 
    }, 5000); 
    setTimeout(function() { 
     clearInterval(refresher); 
    }, 1800000); 
</script> 
</body> 
</html> 

在你的PHP删除tableID:

echo "<table border = '1px'>"; 
+0

嗨HMR,根据alejandro,我应该删除表标签? – nigel

+0

@nigel检查Chrome或Firefox的控制台(在这里重复自己),以确保没有错误和xhr请求。按F12打开,在Firefox(带萤火虫插件)中,XHR请求显示在控制台标签中,您可以点击它并检查它的响应。在chrome中,它们显示在控制台选项卡中,但是您可以查看网络选项卡以检查响应(您也可以在其中看到获取/发布的值和请求/响应标头) – HMR

+0

我已经编辑了代码。它只是保持提示未捕获SyntaxError:错误列中每3秒意外的标识符 – nigel

1

您可以发送AJAX请求refreshable.php并取回结果和更新表如:

document.getElementById('id').innerHTML = AJAXResponse; 


下面是一个例子:

var xmlhttp; 
if(window.XMLHttpRequest) 
{ 
    xmlhttp = new XMLHttpRequest(); 
} 
else 
{ 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

setInterval(function(){ 

    var xmlhttpObserver; 
    if(window.XMLHttpRequest) 
    { 
     xmlhttpObserver = new XMLHttpRequest(); 
    } 
    else 
    { 
     xmlhttpObserver = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttpObserver.open("POST" , "chat.php" , true); 

    xmlhttpObserver.onreadystatechange = function() 
    { 
     if (xmlhttpObserver.readyState == 4) 
     { 
      if(xmlhttpObserver.status == 200) 
      { 
       if((xmlhttpObserver.response).length > 4) 
       { 
        responseArea.innerHTML += friendName + ": " + xmlhttpObserver.response; 
       } 
      } 
      else 
      { 
       //alert("Error during AJAX call. Please try again #002"); 
      } 
     } 
    }; 
    xmlhttpObserver.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    xmlhttpObserver.send("sender=" + friendName + "&receiver=" + userName); 

} ,6000); 


假设我们创建befor这三个变量:

responseArea , friendName , userName 


我用这个代码来通知用户,一个朋友d在线。

+0

@HMR你是对的,但我只是建议另一种方式来做到这一点,它可以让你更好地控制单个元素。 – Soosh

+0

所以我在哪里试图把这个代码? – nigel

+0

@nigel我假设你已经知道AJAX。你做? – Soosh

0

在你的javascript代码中有几个问题。

clearTimeout()方法清除使用setTimeout()方法设置的计时器。

改为使用clearInterval(refresher)