• 締切済み

ACTIONで呼び出したいCGIが動作しない

お世話になります。以前にも似たような内容で投稿させていただいたのですが、 こちらの情報不足もあり、解決しなかったので、再投稿させていただきます。 今社内のホームページにて、CSVダウンロードの機能を持つCSVをメニューから ボタンを押して呼び出す、というPERLのプログラムがあり、下記のような記述で cgiを呼んでいます。 -- <FORM METHOD=POST ACTION="t02.cgi"> <INPUT TYPE=HIDDEN NAME=A VALUE="123"> <INPUT TYPE=HIDDEN NAME=MODE VALUE="111"> <INPUT TYPE=HIDDEN NAME=BU VALUE="DD"> <TD COLSPAN=6>&nbsp;&nbsp;<INPUT TYPE=SUBMIT VALUE="ダウンロード"></TD> </FORM> -- テスト環境と本番環境を持っており、本番環境の上記記述の部分はきちんと動作し、 テスト環境のモジュールにはパラメーターを追加し、少しプログラムの改造を行い、 ほぼ同じような環境で実行していますが、テスト環境では下記のような動作となり、 うまく作動しません。 【エラーの動き】 (1)ボタンを押すと一度メニューが消える。 (2)しかし、すぐメニューが再描画される。 【本来の動き(本番環境)】 (1)ボタンをおす (2)ファイルダウンロードのダイヤログが出てくる。 最初はt02.cgiがおかしいのかな、と思ったのですが、本番環境のものをテスト環境に おいても成功しないことから、原因は呼び出し元、かそれ以外の環境にあると考えています。 上記の現象について、心当たりのある方、よろしくお願いいたします。

みんなの回答

  • feininger
  • ベストアンサー率41% (74/180)
回答No.1

"エラーの動き"でメニューが再描画されているということは、 t02.cgiの呼び出し自体はうまくいっていると思いますよ。 ダウンロードダイアログを表示させたい場合、それなりのヘッダを出力する必要があります。 (Content-Type: とか Content-Disposition: attachment; とか) なぜテスト環境ではメニューを出力するのかは謎ですが、例えば、  ダウンロードするファイルが見つからなかった場合はメニューを表示する  無効なパラメータが送られてきた場合はメニューを表示する ・・・というような仕様はよくありますので、 「テスト環境ではファイルが見つからなかった」などの理由によりメニューを表示しているような気がします。

cshoaucmoa
質問者

お礼

レスありがとうございます。 原因がわかりました。 よく見ると、上記のFORMの前にもうひとつFORMがあり、 その</FORM>が上記の<FORM></FORM>をまたいでつけられていた為の不具合でした。 ここばかり見ていたのでわからなかったのですが、もう少し全体を見なくてはいけないなぁと反省した次第です。 どうもありがとうございました。

関連するQ&A