更新:成功进度但仍然存在问题:刷新页面两次后重新加载新数据可以每10或15分钟刷新一次页面,但是一个ferfesh不显示文本文件中的新数据,尽管它已经包含新数据来自getData.php文件
getData.php代码
$connect = mysql_connect("localhost","root","");
$db = mysql_select_db("mydb",$connect);
$getTextQ = "select * from text";
$getTextR = mysql_query($getTextQ);
$path = "text/";
$myfile = $path."data.txt";
$open = fopen($myfile,"w");
while($row = mysql_fetch_array($getTextR)){
$write = fwrite($open,"<div class='slide'><h1>".$row['id']."</h1><p>".$row['desc']."</p></div>");
}
$close = fclose($open);
mysql_close($connect);
index.php代码
<script src="js/jquery-1.7.1.js"></script>
<script src="js/slides.min.jquery.js"></script>
<script>
$(function(){
$.ajax({
url: 'getData.php',
type: 'POST'
});
});
var txtFile = new XMLHttpRequest();
txtFile.open("GET", "text/data.txt", true);
txtFile.onreadystatechange = function() {
if (txtFile.readyState === 4) {
if (txtFile.status === 200) {
allText = txtFile.responseText;
}
}
}
txtFile.send(null);
});
</script>
html代码
<div id="mydiv" class="slides_container">
<?php $path ="text/";
$open = fopen($path."data.txt","r");
$read = fread($open,50000);
$close = fclose($open);
echo $read;
?>
</div>
答案 0 :(得分:1)
.ajax
是异步的。如果您先调用.ajax
并希望它为同一页面上下一个名为.load
的函数创建文本文件,请在async: false
函数中设置.ajax
。 / p>
$.ajax({
url: 'getData.php',
type: 'POST',
async: false
});
此外,如果出现问题,可能有助于添加延迟以使服务器有时间编写文本文件。我不知道你的文本文件有多大。例如:
$("#myDiv").delay(1000).load("text/data.txt");
或者,在jeroen建议的成功函数中:
$.ajax({
url: 'getData.php',
type: 'POST',
success: function(){
$("#myDiv").load("text/data.txt");
}
});
答案 1 :(得分:1)
我不会将php文件写入文本文件然后读取文本文件;你正在向服务器做两个ajax调用/请求,只需要一个。
除此之外,当两个实例同时尝试在同一个文件上写入时,它可能导致服务器出错。
如果您更改getData.php
以回显值而不是将其存储在文本文件中,则可以将javascript简化为:
$("#myDiv").load("getData.php");