2012-01-18 24 views
0

更新:成功の進歩はありますがまだ問題:ページを2回リフレッシュした後に新しいデータが読み込まれます10分または15分に1回更新されますが、それはすでに新しいデータが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> 

hから来た含まれていても、テキストファイルからtmlコード

+1

あなたは再バインドする必要がありますか? –

+1

@afuzzyllama実際には、html4とhtml5の両方でそれがあります。 – jeroen

答えて

1

私は、テキストファイルへのphpファイルの書き込みを持っているし、テキストファイルを読んでいないでしょう。 1つだけが必要なサーバーに対して2つのajax呼び出し/要求を実行しています。

これとは別に、2つのインスタンスが同じファイルに同時に書き込みを試みると、サーバー上でエラーが発生する可能性があります。

あなたの代わりにテキストファイルに格納する値をエコーするためにあなたのgetData.phpを変更する場合は、にあなたのjavascriptを簡素化することができます:

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

ページ内で動作する前に試しましたが、スライドショーでは試してみませんでした。なぜなら、テキストファイルからコピーして貼り付けるときdivスライドショーの内部では正常に動作するので、ヘッドからエコーされたデータがコード内で何も変化しなければ、スライドショーは分解されます。それはコードhttp://www.mediafire.com/?36gvbb3o6g3ng6tであり、それはテキストファイルです。http://www.mediafire.com/?p45x5jft73tycc5コードは複雑ではありません。スライドショーと2つのphpファイルの小さなプロジェクト2からデータを取得します。データベースはテキストファイルに保存し、もう1つはテキストファイルからデータをエコーする –

+0

そして、バインドの問題がある可能性があります。 –

1

.ajaxはデフォルトでは非同期です。 .ajaxを先に呼び出して、同じページで次に呼び出される.load関数のテキストファイルを作成すると考えられる場合は、.ajax関数でasync: falseと設定します。

$.ajax({ 
    url: 'getData.php', 
    type: 'POST', 
    async: false 
}); 

また、問題が発生した場合にサーバーにテキストファイルの書き込み時間を与えるために遅延を追加すると便利です。私はあなたのテキストファイルがどれくらい大きくなるかも知りません。例:

$("#myDiv").delay(1000).load("text/data.txt"); 

あるいは、イェルーンとして大成功機能で提案:

$.ajax({ 
    url: 'getData.php', 
    type: 'POST', 
    success: function(){ 
     $("#myDiv").load("text/data.txt"); 
    } 
}); 
+1

または、単にajax呼び出しの成功ハンドラに2番目の部分を入れてください。 – jeroen

+0

@jeroenはい、できます。 –

+0

今はdivがロードされているがショーのために非表示になっていますが、テキストファイルの内容をhtml divにコピーするとシードが機能しません。スライドショーは動作しますがテキストファイルのデータを表示すると停止します。 –

関連する問題