![](/img/trans.png)
[英]PHP, MySql, JavaScript - Pushing data from server to client (Live chat)
[英]php, javascript and mysql live data problem
我是Web编程的新手,但我确实想在网站上不断更新的时间序列图中显示一些数据。 因此,我一直在尝试制作一些代码原型,以显示已添加到数据库中的最新整数值。 我要引用的数据库表不断插入整数值。 我的问题是这个; 我正在尝试使用JavaScript和php的组合来在按下网站上的按钮时向数据库显示最新条目。 但是,我可以获取的唯一整数是最初加载页面时数据库中存在的最后一个整数。 似乎我用来从数据库中获取数据的php函数在页面加载后立即运行,并且每次按下按钮后都不会更新。 这是php的限制吗(或者我对php的了解)。 任何帮助将非常感激。
(php函数)
function getData()
{包括“ config.php”;
$db = mysql_connect($dbhost,$uname,$pass);
mysql_select_db ($dbname) or die ("Cannot connect");
$query = "SELECT numCalls FROM $tname ORDER by claatime DESC LIMIT 1";
$result = mysql_query($query);
while($r=mysql_fetch_array($result))
{
$numCalls = $r["numCalls"];
}
return $numCalls;
}
(JavaScript函数)
function getNum()
{
var x = <?php echo getData()?>;
alert('the latest number is ' +x);
}
这是因为您的页面由PHP处理过一次 ,这是第一次请求该页面。
要解决此问题,请将getData()函数的主体放在与页面不同的文件中(我们将其称为getData.php)。 然后发出一个Ajax请求(使用jQuery之类的JavaScript库使其变得容易)。
因此,您的<script>部分应如下所示(假设您已加载jQuery,请参见下文):
function getNum() {
$.ajax({
url: "getData.php",
complete: function(response) {
alert("The latest number is " + response.responseText);
}
});
}
您的getData.php应该如下所示:
<?php
include "/home/store/config3.php";
$db = mysql_connect($dbhost,$uname,$pass);
mysql_select_db ($dbname) or die ("Cannot connect to database");
$query = "SELECT numCalls FROM $tname ORDER BY calltime DESC LIMIT 1";
$result = mysql_query($query);
while($r=mysql_fetch_array($result))
{
$numCalls = $r["numCalls"];
}
header("Content-Type: text/plain");
print $numCalls;
?>
而要加载jQuery,只需添加
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
到页面顶部(在<head>元素中)。
我看不到任何可以重新启动连接的东西。
尽管第二种方法鲜为人知,但浏览器和网站使用的是单一的客户端-服务器模型; 客户端会收到答复,并且一切都在那里....除非重新启动连接。
您似乎不了解网络技术如何工作的基础知识。
只是一个很短的“速成课程”:
如您所见,要更新整数,您需要向Web服务器发出新请求。 您可能想要研究Ajax和XMLHttpRequest来做到这一点。 有足够的脚本和文档可以向您显示如何完成此操作。 我认为您不应仅出于此目的而包括一个框架。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.