電子書籍の厳選無料作品が豊富!

javascriptでCGIに値を渡したいのですが、テキストエリアの値で改行コードが消えてしまいます。教えて下さい。
別窓ページにてtest.cgiを呼び出し、そのCGIに値を渡したいのですが、
一応値はテキスト形式で渡せるのですが、テキストエリアで入力したものの
改行コードが消えてしまいます。何か良い方法があれば、教えて下さい。

<FORM name="test" ACTION="javascript:test_window_open('/cgi-bin/test.cgi?bikou='+document.test.bikou.value);">


<TEXTAREA rows="8" cols="50" name="bikou"></TEXTAREA>

A 回答 (3件)

恐らくCGIの結果を、window.open でスタイル指定したウィンドウに表示したいのでしょうね。

その際のフォームデータの渡し方で困っているのだと思います。

No.1さんのように escape 関数を使うのも手ですが、escape はブラウザによっては日本語を Unicode にしてしまうので、CGIスクリプトが Unicode に対応していなければ文字化けしてしまいます。

このような場合は、まず window.open で別窓を作り、そのウィンドウ宛にフォームを送信する、という方法が有効です。(下記参照)

・FORMタグを次のように変更します。

<FORM action="/cgi-bin/test.cgi" method="post" target="newwin" onSubmit="make_newwin(this)">

・make_newwin 関数を作成します。

function make_newwin(f) {
  var w = window.open('about:blank', f.target, 'スタイル設定');
  w.focus();
}

フォームを送信しようとすると FORM の onSubmit により、make_newwin が(送信前に)実行されます。この時、引数に this(FORM自身)を渡し、window.open の2番目の引数(target指定)に f.target(FORMのtarget属性値)を指定するのがミソです。

その後フォームの送信が行われますが、この時既に newwin という(スタイル指定された)ウィンドウが存在していますので、そちらに送信される、というわけです。

またこの方法では、JavaScript をオフにしている人でも、スタイル指定がされないだけで、別画面にCGIの結果を表示することができます。
(質問の方法では何も起こりません。)
    • good
    • 0
この回答へのお礼

回答有難うございます。
この方法を試したところうまくいきました。
有難うございました。

お礼日時:2004/08/05 14:27

POSTで送ればいいような気がしますけど。

。。
    • good
    • 0
この回答へのお礼

回答有難うございます。
POSTだけでは、うまくいきませんでした。
有難うございました。

お礼日時:2004/08/05 14:28

escape()関数を使用してはいかがでしょうか



値を渡す際、以下のようにし、
'/cgi-bin/test.cgi?bikou='+escape(document.test.bikou.value);

CGIのほうのjavascriptで unescape() をして書き出すと良いかと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
この方法を試してみましたが、
CGIのjavascriptでうまく変換することが
できませんでした。
他の時に使わせていただきます。

お礼日時:2004/08/05 14:29

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!