从文本文件中获取数据的小概率

时间:2012-01-18 19:58:34

标签: php jquery ajax

更新:成功进度但仍然存在问题:刷新页面两次后重新加载新数据可以每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>

2 个答案:

答案 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");