我试图每三秒钟读取数据而不重新加载页面。我在脚本中遗漏了一些内容,因为在重新加载页面之前它不会刷新数据。提前谢谢。
<html>
<head>
<meta charset="UTF-8">
<title>Testing</title>
<!-- below script is for jquery -->
<script type="text/javascript" src="js/jquery-1.4.2.js"></script>
<script type="text/javascript">
function refreshData(){
$.ajax({
url: 'localhost/index1.php',
type:"POST",
data:"dataPost",
success: function(data){
document.getElementById("dataPost").innerHTML = data;
//render the dynamic data into html
}
});
}
setInterval(refreshData, 3000);
</script>
</head>
<div id="dataPost">
<?php
$conn = mysql_connect('localhost','user','password');
$db = mysql_select_db('db',$conn);
$query = "select * from table";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
echo $row['data1']."<br/>";
}
?>
</div>
</html>
答案 0 :(得分:2)
我同意@Axel,但由于Ajax是一个异步函数,即使您的PHP代码在外部文件中,您仍然会遇到时序问题。
基本上,您无法知道完成Ajax调用需要多长时间(想象服务器正忙或低),因此手动设置间隔为每3秒是没有意义的。您需要将其设置为距离上次完成时间3秒。
在你的php上 - 只需将你的脚本放在外部文件中(即script.php)。
在你的Javascript上 -
创建document.ready事件并从中调用refreshData()。
<script type="text/javascript">
$(document).ready(function() {
refreshData();
});
function refreshData(){
$.ajax({
url: 'localhost/script.php',
type:"POST",
data:"dataPost",
success: function(data){
document.getElementById("dataPost").innerHTML = data;//why not use $('#dataPost').html(data) if you're already using jQuery?
setTimeout(refreshData, 3000);//will make the next call 3 seconds after the last one has finished.
//render the dynamic data into html
}
});
}
</script>
您的PHP文件(script.php)将如下所示:
<?
$conn = mysql_connect('localhost','user','password');
$db = mysql_select_db('db',$conn);
$query = "select * from table";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
echo $row['data1']."<br/>";
}
?>
希望这有帮助。
许多人都会指出,p.S.S不推荐使用mysql_connect,因此最好开始使用MySQLi或PDO。答案 1 :(得分:0)
而不是调用页面本身,将来自div的php代码放入单个.php文件中,并在AJAX调用中调用此文件。就是这样。
答案 2 :(得分:0)
我发现它之所以这样做是javascript的版本。我使用1.8.0它开始工作正常。它一直在工作,但谷歌浏览器有版本问题。我做了很少的研究,并尝试更改版本号,但它确实有效。