2012-01-18 24 views
0

更新:成功進展,但仍然存在問題:刷新頁面兩次它的確定刷新頁面每隔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> 

小時新的數據來tml代碼

<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> 
+1

你需要重新綁定? – 2012-01-18 20:02:55

+1

@afuzzyllama其實他們這樣做,在這兩個HTML4和HTML5。 – jeroen 2012-01-18 20:22:56

回答

1

我不會有PHP文件寫入到一個文本文件,然後讀取該文本文件;你正在對服務器做兩個ajax調用/請求,只需要一個。

除此之外,它可能會導致在服務器上的錯誤,當兩個實例嘗試在同一時間同一個文件來寫。

如果您改變getData.php呼應出來的值,而不是將它們存儲在一個文本文件,可以簡化您的JavaScript來:

$("#myDiv").load("getData.php"); 
+0

我試過它之前它在頁面中的作品,但不是在幻燈片中不知道爲什麼,但從代碼工作時從文本文件複製它並粘貼它在div幻燈片內正常工作,所以問題是幻燈片放映失敗,如果數據從頭回聲沒有什麼改變的代碼。這是代碼http://www.mediafire.com/?36gvbb3o6g3ng6t,這是文本文件http://www.mediafire.com/?p45x5jft73tycc5代碼並不複雜,只是一個幻燈片和2個PHP文件的小項目2從數據庫將其保存到文本文件,另一個從文本文件中回顯數據 – 2012-01-19 19:27:29

+0

並且,可能存在綁定問題。 – 2012-01-20 17:30:31

1

.ajax默認爲異步。如果你打電話.ajax第一,並期望它以創建.load功能對接下來要在同一頁上稱爲文本文件,在.ajax功能設置async: false

$.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

或者你只是把第二部分在Ajax調用成功處理程序... – jeroen 2012-01-18 20:18:22

+0

@jeroen是的,你可以。 – 2012-01-18 20:19:29

+0

確定現在的div加載,但隱藏的節目,但是當我的文本文件的內容複製到HTML DIV,幻燈片作品,但是當我從文本文件顯示獲取數據停止 – 2012-01-18 21:45:16