• ベストアンサー

クッキーが邪魔をする

AjaxとCGI(Perl)は初心者のものです。 Ajaxを使ってCGIにデータを送信し、TXTを書き換えるのを作りました。 しかし、書き換えたTXTをAjaxで読み取ると、書き換える前のままなのです。 TXTを開いてみると更新されていて、 それを開いてから出ないと、HTMLに反映されません>< 「HTML」⇒⇒(1)⇒⇒「CGI」⇒⇒(2)⇒⇒「TXT」  ↓                        ↑  ⇒⇒⇒⇒⇒⇒⇒⇒(3)⇒⇒⇒⇒⇒⇒⇒↑ (1)データをAjaxで送信 (2)CGIを使って書き換え (3)AjaxでTXTの内容を読み取り 上の(3)で、古いデータが引き出されます。 どなたか分かる方がいましたら、お助けください。

  • AJAX
  • 回答数2
  • ありがとう数13

質問者が選んだベストアンサー

  • ベストアンサー
noname#84373
noname#84373
回答No.2

キャッシュが効いていると推測。 ダミーの数値をつけて呼び出す var dmy = (new Date).getTime(); パラメーターを送るさいに、 '&dmy='+dmy を最後に付け加える 呼び出されるCGI側ではその数値は無視してOK!

kura07
質問者

お礼

まさにこれでした! ?のあとに意味の無い情報を加えて、ブラウザにもう一度読み取らせるのですね。 自分のプログラムでは「..."?a="+Math.random()」という風にしておきました。 ありがとうございました。

その他の回答 (1)

noname#94983
noname#94983
回答No.1

(1)データをAjaxで送信 (2)CGIを使って書き換え (3)AjaxでTXTの内容を読み取り これは、そのまま続けて実行しているということはないだろうか。 (1)~(2)が完了した後に(3)を実行しているようになっているだろうか。(1),(2)が実行されてそのまま(3)を実行しても、まだそのときには(2)が完了していないのかも知れない。そのへんは問題ないのだろうか。

kura07
質問者

お礼

回等ありがとうございます。 確認したところ、何秒たっても反映されないので、 その辺は問題ないようです。

関連するQ&A

  • Ajax⇒CGI

    JavaScriptは結構知ってますが、 AjaxとPerlに関しては初心者のものです。 早速ですが質問です。 Ajaxで送信したデータをCGI(Perl)で処理して、 サーバーのテキストに保存する方法が良く分かりません。 サーバーはCGIを許可しているところを使っています。 どなたか詳しい方、ご教授お願いします!

  • 子窓で送信したら、親ウィンドウを更新したい

    はじめまして。leaz024と申します。 仕事で次のようなものHTMLを作成することになりました。 ・CGIで表示したページ内のボタンで、小窓(入力フォーム)を開く。 ・小窓で送信ボタンを押すと、小窓は閉じる。 ・送信された内容がサーバで処理された後、親窓を自動的に更新して、内容を反映させる。 CGIはPerlで作成しており、HTMLにはJavaScriptを使ってもよいことになっています。 このような動作をさせたいのですが、やり方が分かりません。 どなたか教えてください。 お願いします。

  • CGI→AJAXへ配列の受け渡しは可能でしょうか

    CGI→AJAXへ配列の受け渡しは可能でしょうか AJAX→CGI→DB→CGI→AJAXでデータの受け渡しを考えています。 CGIでDBからデータを受け取ったあとに、AJAXでデータを加工後、HTMLにDBからのデータを表示したいと思っています。 初心者的な質問で申しわけございませんが、CGIからAJAXにでデータを渡すときに、配列の形式で渡すことはできるのでしょうか。 配列のまま渡してAJAXでデータ加工したいと思うのですが、うまくできないので、そもそもできるかどうかお聞きしたいと思いました。 例えば、  &Jcode::convert(\@data,'utf8'); print @data; このようにしてみましたが、ダメでした。 テキストでしか受け渡しができないのでしょうか。 ご存じの方いらっしゃいましたらお願い致します。

    • ベストアンサー
    • AJAX
  • TXTに出力すると文字化けが起こる

    Ajaxで送信したデータを元にCGI(Perl)でTXTファイルを書き換えると、 どうしても文字化けしてしまいます。 内容はこんな感じです。無駄な部分は省きました ************************* #!/usr/local/bin/perl print "Content-type: text/html; charset=Shift_JIS\n\n"; use CGI; $n = $q->param("name"); $data = "$nさん、こんにちは"; open(F,"> data.txt"); flock(F,2); print F $data; flock(F,8); close(F); end; ************************* $n(フォームのデータ)は文字化けしないのですが、 「さん、こんにちは」の部分が文字化けしてしまいます。 詳しい方、ご教授願います。

    • 締切済み
    • CGI
  • cgiでポーリングして取得したデータが変化していた時のみHTMLをリロードする方法

    Perlのカテゴリで質問したところ(質問番号:5634620)、JavaScriptで実現 できるかもしれないとのアドバイスを頂いたので、こちらで質問します。 次のことをするcgiを作りたいのですが  1. cgiを起動したらある装置からデータを読み込んできて配列及びファイルに   書き込み、その内容を表(HTML)に表示。(即時)  2. 5秒ごとに装置に対してデータを読みに行き(ポーリング)、変化があったら   (セーブしてあるデータと読みに行ったデータに違いがあったら)表(HTML)を    リロードして新しいデータの内容を表示する。 perlのカテゴリで下記のようなアドバイスを頂きましたが、 Javascriptは全くわからず、お手上げ状態です。 >Ajaxを使えばできそうな気がします。 >setInterval(checkData,5000); >として5秒毎に、checkData関数を呼び出します。 >checkData関数内では、Ajaxを使ってサーバーのデータを読み込み、現在の >データと照合し、更新していれば、 >location.reload(true); >として、リロードさせます。 実際にどの様に記述すれば実現可能か、教えていただけませんでしょうか。 よろしくお願い致します。

  • 「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表

    「SubmitせずにAjaxからCGIを呼び出して結果をHTML上に表示したい」 HTMLファイル上にテキストボックスとそれと対になるラベル(ラベルじゃなくても良いのですが。。)のセットがいくつかあります。 テキストボックスにコードを入力したら、ラベルにそのコードに対応する商品名を表示したいと思っています。 テキストボックスにコードを入力後、フォーカスが離れたら(Onchangeで)Ajaxでそのコードの値を取得し、そのデータをCGIに渡してサーバにあるDBに接続し、その結果をHTML上のラベルに表示したいと思います。 Sbmitせずにフォーカスが離れた場合に、データをCGIに受け渡し、そのデータを画面遷移しないで、HTML上に表示するのはどのようにすればいいのでしょうか。 Ajaxを使えばいいと教わったのですが、色んなサイトを調べてみたのですが、Ajaxが初心者で、よくわからず、コードなどございましたら教えて頂けましたら嬉しいです。 よろしくお願い致します。

    • ベストアンサー
    • AJAX
  • JSONをperlで受け取る方法

    お世話になります。 jQueryを使用します。 Handsontableを使いたいと思います。 表に入力した内容をperlのCGIにデータ送信して、処理をしたいのですが どのようにすればいいのかがわからずにいます。 http://handsontable.com/demo/ajax.html こちらにサンプルがあるのですが、saveのときの処理がよくわかりません。 $.ajax の data にただの文字列を設定すれば、CGIでの受け取り方がわかるのですが、 表のデータ?(handsontable.getData()の部分)の場合、CGIではどのように 受け取れば良いのでしょうか? $.ajax({   url: "netaut2.cgi",   data: {"data": "abcde"},   dataType: 'json',   type: 'POST',    : } ↑こうであれば、CGI側は $form = new CGI; $val = $form->param('data'); このようにして$valに"abcde"とデータが取れますが、 var json_data = [ {"name" : "Taro", "age" : 19}, {"name" : "Hana", "age" : 25} ]; $.ajax({   url: "netaut2.cgi",   data: json_data,   dataType: 'json',   type: 'POST',    : } のようにした場合がわかりません。 宜しくお願い致します。

    • ベストアンサー
    • AJAX
  • 以下のような記述では エラーになります?

    cgi初心者です #!/usr/bin/perl $kinoko='../kino.txt'; open DATA "+<$kinoko"; $mokk=<DATA>; $mokk++; print DATA $mokk; close DATA; print <<END_HTML; <html> <body> <font size="7"> $mokkです </font> </body> </html> END_HTML exit; どこに問題があると考えられるでしょうか

    • ベストアンサー
    • CGI
  • フォームメール確認画面ありのロジック

    はじめまして。 よろしくお願いします。 Perlの勉強を始めたばかりの初心者です。 自作のCGI(Perl)でフォームメールを作成しようとしています。 1.フォームに必要事項を入力 2.確認画面で確認 3.OKならメール送信 ※自分と フォームから入力してもらったアドレスへ2通 1から2へは フォームからのデータ受取 変換 受け取ったデータを含むHTMLの作成。 でできると思うのですが、 2から3へは皆さんどのようなロジックを使っていらっしゃるんでしょうか? 私は1から2へのHTMLの作成の際に Hiddenでメール送信したい内容を隠し持たせてから、 2の画面でのSubmitの時に隠し持たせた内容をメール送信すれば良いのかな? と思っているのですが、 他にどのような方法があるのか(使ってらっしゃるのか)教えて頂きたいのです。 また、上記の方法に対する良し悪しなどもご指摘頂けますと とても助かります。 足りないところは補足致します。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • CGIプログラムに自信のある方、どうか知恵を貸して下さい!!(再)

    Perlで書いたCGIプログラムを使って、申し込みフォームを利用し、メールでデータを送信しています。(HTML形式で表示するようにしています) (使用しているPCはWindows98、メーラーはOutlookExpressです) それを更に応用して、そのHTML表示のメールに送信ボタンも表示させることにより、更に別の人に、そのHTML表示のデータそのままを送信する(送信先は、そのメールの中に書き込まれているアドレス)というものを作成したいと思っています。(OutlookExpressの転送メール処理を使用しない) このようなものを作成するには、Perlを使ったCGIプログラムでできますでしょうか? ちょっと無謀な案ですが、どなたか良い案があれば、知恵を貸して下さい。

    • 締切済み
    • CGI

専門家に質問してみよう