解決済みの質問
AjaxとCGI(Perl)は初心者のものです。
Ajaxを使ってCGIにデータを送信し、TXTを書き換えるのを作りました。
しかし、書き換えたTXTをAjaxで読み取ると、書き換える前のままなのです。
TXTを開いてみると更新されていて、
それを開いてから出ないと、HTMLに反映されません><
「HTML」⇒⇒(1)⇒⇒「CGI」⇒⇒(2)⇒⇒「TXT」
↓ ↑
⇒⇒⇒⇒⇒⇒⇒⇒(3)⇒⇒⇒⇒⇒⇒⇒↑
(1)データをAjaxで送信
(2)CGIを使って書き換え
(3)AjaxでTXTの内容を読み取り
上の(3)で、古いデータが引き出されます。
どなたか分かる方がいましたら、お助けください。
投稿日時 - 2008-10-13 10:10:08
キャッシュが効いていると推測。
ダミーの数値をつけて呼び出す
var dmy = (new Date).getTime();
パラメーターを送るさいに、
'&dmy='+dmy
を最後に付け加える
呼び出されるCGI側ではその数値は無視してOK!
投稿日時 - 2008-10-13 17:26:38
お礼
まさにこれでした!
?のあとに意味の無い情報を加えて、ブラウザにもう一度読み取らせるのですね。
自分のプログラムでは「..."?a="+Math.random()」という風にしておきました。
ありがとうございました。
投稿日時 - 2008-10-13 19:34:23
11人が「このQ&Aが役に立った」と投票しています
ベストアンサー以外の回答(1件中 1~1件目)
(1)データをAjaxで送信
(2)CGIを使って書き換え
(3)AjaxでTXTの内容を読み取り
これは、そのまま続けて実行しているということはないだろうか。
(1)~(2)が完了した後に(3)を実行しているようになっているだろうか。(1),(2)が実行されてそのまま(3)を実行しても、まだそのときには(2)が完了していないのかも知れない。そのへんは問題ないのだろうか。
投稿日時 - 2008-10-13 13:19:39
お礼
回等ありがとうございます。
確認したところ、何秒たっても反映されないので、
その辺は問題ないようです。
投稿日時 - 2008-10-13 19:31:42