我正在尝试使用JavaScript和php代码在我的页面上进行自动更新以从服务器读取数据
<html>
<head>
<script type="text/javascript">
function timeMsg()
{
var myVar=setInterval(function(){myTimer()},5000);
}
function myTimer()
{
document.write("<?php
session_start();
$userdata = $_SESSION['views'];
$name = $userdata[1];
$mysql_host = 'localhost';
$mysql_user = 'root';
$connection = mysql_connect($mysql_host,$mysql_user);
mysql_select_db("twitter2", $connection);
$query = "SELECT * FROM `logindata`";
$result =mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
echo $row['loginname'];
}
echo "<br>";echo "<br>";
?>");
}
</script>
</head>
<body>
<form>
<input type="button" value="Display alert box in 3 seconds"
onclick="timeMsg()" />
</form>
</body>
</html>
此代码工作正常,但只显示数据库中第一次找到的内容 但如果我在数据库中添加更多行,则新的行不会出现在页面上。
谢谢大家 我改变了一些代码,就像这样
<html>
<head>
<script type="text/javascript">
function timeMsg()
{
var myVar=setInterval(function(){myTimer()},1000);
}
function myTimer()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","phptest.php",true);
xmlhttp.send();
}
</script>
</head>
<body>
<form>
<input type="button" value="Display alert box in 3 seconds"
onclick="timeMsg()" />
<div id="txtHint"></div></p>
</form>
</body>
</html>
和php文件
<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$connection = mysql_connect($mysql_host,$mysql_user);
mysql_select_db("twitter2", $connection);
$query = "SELECT * FROM `logindata`";
$result =mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
echo $row['loginname'];
}
?>
它对我来说很好。谢谢你的帮助
答案 0 :(得分:1)
你做错了 - 你的JavaScript函数的内容在服务器上被解释并且总是相同的。您的JavaScript函数必须向服务器发送请求并处理响应。
如果您使用JQuery,这可能看起来像这样
$.get('ajax/script.php', function(data) {
$('.result').html(data);
});
并在script.php中,您可以输出数据库结果
答案 1 :(得分:0)
javascript是一种客户端语言。 你不能用javascript打印出一些php,因为它发生在客户端浏览器中。
您需要在服务器上执行此操作,因此我认为您需要的是服务器端php脚本的ajax请求(XMLHttpRequest),它看起来像document.write的内容。
一个非常简单和漂亮的跨浏览器方式是使用jquery.ajax。 http://api.jquery.com/jQuery.ajax/
简单教程: http://viralpatel.net/blogs/jquery-ajax-tutorial-example-ajax-jquery-development/
答案 2 :(得分:0)
使用Ajax组合客户端和服务器端语言!
答案 3 :(得分:0)
史蒂文是对的,这就是我对jquery的处理方式:
在javascript中:
function myTimer()
{
$.ajax({
url:'path/to/your-script.php',
type:"POST",
data:"ajax=true",
success:callBackMyTimer
});
}
function callBackMyTimer(data)
{
alert(data);
}
在你的-script.php
中<?php
if(isset($_POST['ajax']) && $_POST['ajax'] == 'true')
{
session_start();
$userdata = $_SESSION['views'];
$name = $userdata[1];
$mysql_host = 'localhost';
$mysql_user = 'root';
$connection = mysql_connect($mysql_host,$mysql_user);
mysql_select_db("twitter2", $connection);
$query = "SELECT * FROM `logindata`";
$result =mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
echo $row['loginname'];
}
echo "<br>";echo "<br>";
}
exit;
?>