我每5秒更新一次我的php页面
window.setInterval(function(){
console.log(<?=mysql_num_rows(mysql_query("select * from records"))?>)
}, 5000);
如果我的表中有5条记录,则输出为5, 但是当我插入一条新记录时,输出仍为5,除非我刷新整个页面,然后它将是6 ..
怎么了?
答案 0 :(得分:1)
您对PHP和Javascript的工作方式存在根本性的误解。别担心,这在第一次学习网页开发时很常见!
当您使用PHP在页面上打印内容时(例如{{1}}中的代码),代码在服务器上执行。尝试查看页面的来源,您会看到当浏览器收到页面时,PHP代码已被其结果替换。
这意味着当你的Javascript循环运行时,它只是重复写出相同的预先计算的值。
要完成您的目标,您需要接受每5秒刷新一次页面,或者阅读AJAX。 AJAX是如何在不重新加载页面的情况下从服务器(因此,来自数据库的任何内容)加载新内容的方式。这就是StackOverflow用来显示“这个问题的1个新答案”的例子。
答案 1 :(得分:0)
这是因为你正在将PHP与JS混合,PHP值是在页面加载时编写的,并且它始终保持在页面中。
您应该使用再次请求值的Ajax请求。
执行仅返回此值的PHP页面:
<?=mysql_num_rows(mysql_query("select * from records"))?>
然后用这样的东西扩展你的JS:
setInterval($.ajax({
url: 'your-url-with-php-result',
type: 'GET',
cache: false,
success: function(result){
console.log(result);
}
}), 5000);
您还需要包含Jquery来执行此操作
答案 2 :(得分:0)
你不能在javascript代码中使用php
你在example.php中保存php并在javascript代码中调用example.php
您的 example.php 就像这样
<?php
echo mysql_num_rows(mysql_query("select * from records"));
?>
现在您可以通过此代码大约5秒左右从示例中获取数据(加载是jquery函数)
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
setTimeout(function(){
$("#showRes").load("example.php");
}, 5000);
</script>
</head>
<body>
<div id="showRes"></div>
</body>
</html>
答案 3 :(得分:0)
你通常混合jaavscript和php的概念。你可以很容易地解决这个问题。通过将php值传递给ajax并且该值应该捕获javascript。尝试查看页面的来源,并且您将看到当浏览器收到页面时,PHP代码已经被其结果替换。
在php页面中编写php代码,如: -
<?=mysql_num_rows(mysql_query("select * from records"))?>
并使用js作为不同的页面。称该值为您的要求。 如: -
setInterval($.ajax({
url: 'your-url-with-php-result',
type: 'GET',
cache: false,
success: function(result){
console.log(result);
}
}), 5000)
如果你需要一些jquery,那么你也在你的代码中包含它。