Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 每隔x秒自动刷新HTML表_Php_Javascript_Html - Fatal编程技术网

Php 每隔x秒自动刷新HTML表

Php 每隔x秒自动刷新HTML表,php,javascript,html,Php,Javascript,Html,我正在尝试刷新一个表,因为其中的变量不断更新,我想每隔几秒钟重新更新这些变量。我已经通过给表一个id并为其创建一个div完成了代码。代码将解释我实际需要的东西。提前谢谢!添加了Var表,Var刷新器,表id为tableID。但是代码仍然无法重新加载我的表!有什么想法吗 Test.php <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery

我正在尝试刷新一个表,因为其中的变量不断更新,我想每隔几秒钟重新更新这些变量。我已经通过给表一个id并为其创建一个div完成了代码。代码将解释我实际需要的东西。提前谢谢!添加了Var表,Var刷新器,表id为tableID。但是代码仍然无法重新加载我的表!有什么想法吗

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>

var table=$(“#tableID”);
//每5秒刷新一次
//var refresher=setInterval(函数(){table.load(“refreshable”);},5000);
var refresher=setInterval(table.load.bind(table,“refreshable.php”),5000;
//var refresh=setInterval($(“#tableID”).load('refreshable.php'),3000);
setInterval(函数(){
清除间隔(刷新);
}, 1800000);
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>";



?>

您可以将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);

假设我们在以下时间之前创建这三个变量:

responseArea , friendName , userName


我使用此代码通知用户朋友在线。

正如Ajelandro在评论中指出的,您可以尝试用可刷新表填充div:

我已经移动了脚本并添加了doctype(html5)



javascript代码中有几个问题

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


使用
clearInterval(refresher)

在Firefox或Chrome中,按下F12键时,控制台应显示什么是
table.load.bind
do。您能看到正在发出的xhr请求吗?我认为该表应该包含在test.php中,这样就不会重新加载
代码。您要重新加载的是其中的数据。在Javascript中,您可以执行类似于
$(“#tableID”).load('refreshable.php')
(当然,
标记,包括
应该不在refreshable.php中)。@Saurabh它是jquery,它将发出一个xhr请求,并用响应设置元素的innerHTML。JQuery load:Function.prototype.bind:@AlejandroIván您好,您的意思是我应该去掉表标记并在test.php中添加一个div???@HMR您是对的,但我只是建议另一种方法,它可以让您对单个元素进行更多的控制。那么,我应该将其放在代码中的什么地方呢???@nigel我假设您已经了解AJAX。是吗?是的,我是。他们说AJAXResponse是未定义的。@nigel假设您没有错误,您可以通过最小的更改使其工作。自己执行Ajax请求会导致代码发生更大的变化。Amir发布的代码不能复制并粘贴到您的代码中。当您自己而不是使用JQuery.load发出Ajax请求时,这是一段伪代码。像$.get、$.post或$.ajax一样,我建议首先尝试Ajelandro或我的解决方案,因为它对您已经拥有的代码进行了微小的更改。并且确保在调用jQuery.loadHi HMR时没有错误并且发出了ajax请求,根据alejandro的说法,我应该删除表标记?@nigel也检查Chrome或firefox控制台(在这里重复我自己),以确保没有错误并且发出了xhr请求。按F12打开,在Firefox(带有firebug插件)中,XHR请求显示在控制台选项卡中,您可以单击它并检查它的响应。在chrome中,它们确实显示在控制台选项卡中,但您可以查看网络选项卡以检查响应(您也可以在那里看到get/post值和请求/响应标题)。我已经编辑了代码。它只是在错误列中每3秒钟提示一次未捕获的SyntaxError:意外标识符Yup我已重新更新代码,错误已消失。在“网络”选项卡中,没有连接……可能是什么问题,如果可能的话,我会上传一张图片
<!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>
echo "<table border = '1px'>";