改行コード変換で引数の受け渡しできず、改行含む場合にはalertが出力されない現象の原因と解決方法

このQ&Aのポイント
  • 質問者は、ColdFusionとJavaScriptを組み合わせてプログラムを書いています。
  • 質問者のプログラムは、データベースからテキストを取得し、改行コード(Chr(13))を<br />に変換しています。
  • 問題は、改行が含まれる場合にはalertウィンドウが出力されないことです。この現象の原因として考えられるのは、テキストの中で改行コード(Chr(13))が無視されている可能性です。解決方法としては、テキストを表示する前に改行コード(Chr(13))を除去することがあります。
回答を見る
  • ベストアンサー

改行コード変換しても、引数の受け渡しが出来ない。

coldfusion と Javascript を組み合わせて、プログラムを書いています。 下記のプログラムは、 データベースからテキストを呼びだし(result.Message)、 その呼び出したテキストの中に、改行コードがあれば<br />に変換しています。 変換したテキストを引数にし、Javascript関数send_messageを呼び出しています。 問題は、ここから、 result.Message の中に元々改行が無ければ、alertウィンドウが出力されるのに 改行が含まれていると、alert ウィンドウが出力されません。 改行コードを<br />に変換しているのにも関わらずです。 この現象は、何が原因なのでしょうか。 解決方法を教えていただきたく、お願いいたします。 <cfprocessingdirective pageencoding="Shift-JIS"> <html> <head> <script language="JavaScript"> <!-- function send_message(message){ alert(message); } </script> </head> <body> <form name="BBS_form" method="post" action="send_message.cfm" enctype="multipart/form-data"> <cfinvoke component="bbs" method="ShowMessages" returnvariable="result"> </cfinvoke> <cfoutput query = "result" > <!--- 改行コードを<br> に変換 ---><!--- result.Message は、text型 ---> <cfset change_mes = Replace(result.Message, Chr(13), "<br />", "all")> <!--- 改行コードを変換しているのに、ボタンを押しても、alert ウィンドウが出力されない。---> <input type="button" name="test" value="テスト" onClick="return send_message('#change_mes#');"> </cfoutput> </body> </html>

noname#132608
noname#132608

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

  • ベストアンサー
回答No.3

Chr()を変えただけでreplace元を変えるのを忘れてました。m(_ _)m <cfset change_mes = Replace(result.Message, Chr(13)+Chr(10), "<br />", "all")> <cfset change_mes = Replace(change_mes, Chr(13), "<br />", "all")> <cfset change_mes = Replace(change_mes, Chr(10), "<br />", "all")>

その他の回答 (2)

回答No.2

すみません、まちがえました。 13が先でした。 <cfset change_mes = Replace(result.Message, Chr(13)+Chr(10), "<br />", "all")>

回答No.1

改行コードは3種類ありますので、3種類ともに対応させないとダメじゃないでしょうか。 もうちょっといい書き方があるかもしれませんが、Coldfusionはよく知らないので。 <cfset change_mes = Replace(result.Message, Chr(10)+Chr(13), "<br />", "all")> <cfset change_mes = Replace(result.Message, Chr(13), "<br />", "all")> <cfset change_mes = Replace(result.Message, Chr(10), "<br />", "all")>

関連するQ&A

  • CGIで改行タグを改行コードに変換ってできますか?

    CGIで改行タグを改行コードに変換ってできますか? $text =~ s/\r\n/<br>/g; $text =~ s/\r/<br>/g; $text =~ s/\n/<br>/g; で確認画面上で表示されるtextareaの文章は改行されるのですが、 届いたメールには<br>と表示されてしまって困ってます。 PHPでは変換できるみたいなのですが、perlでも出来るのでしょうか?

    • ベストアンサー
    • CGI
  • 改行コードの<BR>への変換がうまくいきません。

    はじめまして よろしくお願いします。 仕事でPHPを触れはじめたところです。 textarea タグで入力されたものをMysqlに保管し、 また表示するというようなものを作ろうとしています。 困っているのは Mysqlがどうのではなくその登録前に 改行コードを <br>タグ に変換をかけておこうというところで躓いています。 セッションを開始しておいてFormタグからの値を 次のページで受け取っています。 ここの過去ログ等を参考にしてみたのですが... $_SESSION['e_biko'] = htmlspecialchars($_POST['biko'] , ENT_QUOTES) ; $tmp_biko = ""; $tmp_biko = str_replace("\r\n", "\r", $_SESSION['e_biko']); $tmp_biko = str_replace("\r", "\n", $tmp_biko); $_SESSION['e_biko'] = str_replace("\n", "<br>", $tmp_biko); このあとでechoを使って$_SESSION['e_biko'] を表示させています。 しかし改行しないんです。<BR>タグへの変換ができておらず、表示されたHTMLのソースコードを見ると改行コードがそのまま出力されています。 HTML及びPHPの文字コードはEUCで記述しています。 開発及び確認はWindows・IE6で行っています。 何か考えられる原因、あるいはバグかあるでしょうか? ちなみに下記でも駄目でした。 $_SESSION['e_biko'] = preg_replace("/\r\n|\r|\n/", "<br>", $_SESSION['e_biko']); お分かりになられる方おられましたらよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 改行コード変換のタイミングについて教えてください。

    改行コード変換のタイミングについて教えてください。 前提: \n: ラインフィード  \r: キャリッジリターン UNIX    \n Winodws   \r\n MAC     \r PerlスクリプトによるCGIで、ブラウザに出力します。 このとき、生成するHTMLのFORM要素.INPUT要素.VALUE属性 に変数データを代入しています。 これは、文字列になっており、当初、\nを区切り文字として使用し、 HTMLとなってからJavaScriptでこの区切り文字を頼りに配列化しました。 ところが、MAC環境の方に確認をお願いしたところ、期待通りの動作をして おらず、調べたところ、\nがすべて\rに変換されていたため、JavaScriptで \nを探しても見つからなかったということがわかりました。 Windowsも\r\nに変換されています。 この改行コードの変換がなにを基準に、どのタイミングで起きているのかがよくわかりません スクリプトの文字コードとget要求をしてきたOSを見て、Apacheが行っているのか、 それとも、ブラウザがやっているのか。 はたまた、アプリケーション層に行くまでの下層プロトコルがやっているのか。 判断基準はGETの中にあるのか、出力されたcontent-typeなのか・・・・。 変換がなに依存なのかわからないと、どんなとき変換が起き、どんなときは起こらないのかが わからないので、このあたりの仕組みの詳細に詳しい方、ご教授願えませんか。 自分でもある程度調べたのですが、環境が限定されますし、ドキュメントもhttpプロトコル を調べるべきなのか、TCP/IPなのか、HTML(のFORMリクエスト)なのか、httpデーモン なのか、httpdが動いているUNIXサーバOSなのか、それともIEやNNの仕様を調べる必要があるのか・・・ どこがやっていることなのかわからないもので。

    • 締切済み
    • CGI
  • 改行コードを変換するにはどうすれば?

    cgiのデータをアスキーの改行コードに変換しなければいけないのですが、どうやったらいいのでしょうか。 テキストエディタは、TeraPadを使用しています。 よろしくお願い致します。

  • <br>タグを改行に変えたい

    掲示板を作っています。 テキストファイルに書き込んである文字列ですが、改行は<BR>に変換して保存します。 編集で呼び出すときに、<BR>をもとの改行コードに戻す作業を試みています。 $message =~ s/<br>/\n/ig; とやるとテキストエリアがすべて空白です。 $message =~ s/<br/\n/ig; と>をなくすと改行されてテキストエリアに表示されます。 ただ、データには>が残ったまま表示されます。 この対処法を教えてください。

    • ベストアンサー
    • Perl
  • 引数が分かりません。

    JavaScriptの超初心者です。 (1)のmessageと(2)のmessageと(3)の'Hello JavaScript !'との相関関係がよく分かりません。  又、引数そのものの意味もよく分かりません。 どなたか教えて下さい、よろしくお願いします。 <html> <head><title>イベントハンドラーの定義</title>    <SCRIPT> <!-- function showMessage(message){                   (1) window.alert(message);                     (2)                    } //--> </SCRIPT> </head> <body> <center> <hr>イベントハンドラーの定義<hr><br> ボタンをクリックするとダイアログボックスが表示されます。<br><br> <form>   <input type="button" value="ここをクリック"    onclick="showMessage('Hello JavaScript !');">         (3) </form> </center> </body> </html>

  • 改行コードの変換方法

    Excelシート内にあるテキストボックスの改行コード(LF)が多数存在してます。 これを改行コード(CRLF)に簡単に変換する方法はありますか? 対象文字を選択してExcelの置換機能で変換できませんか?

  • 改行コードについて

    phpで開発をしています。 テキストファイルに文字列を出力する際に、改行コードを扱う以下のような場合について、 ①$str='ab\ncd'; ②$str="ab\ncd"; ①の変数の内容を出力すると\nがそのまま出力されます。 ②の変数の内容を出力すると改行されて出力されます。 質問ですが、この二つの違いについては、 ①のときは\nという文字として出力された。 ②のときは改行コードとして出力された。 (バイトコードで見ると、二つのコードは違っている?) という認識で良いのでしょうか。 ご教示いただけますと幸いです。

    • ベストアンサー
    • PHP
  • [javascript][IE] textarea内の改行を消す方法を教えてください。

    テキストエリア内の改行をreplaceで除去したいのですが、FireFoxではうまくいくのですがIEではうまく動作しません。 下記のようなソースです。 IEではどのように書けば良いのでしょうか。 <html> <head> <script type="text/javascript" language="javascript"> function change_box(){ temp = document.getElementById("in").value; temp = temp.replace(/\n/g,""); document.getElementById("out").value = temp; } </script> </head> <body> <form> <textarea id="in" rows="3" > 一行目 二行目 三行目 </textarea><br /> <textarea id="out" rows="3" ></textarea><br /> <input type="button" value="変換" onclick="change_box()"> </form> </body> </html>

  • Macの改行コード

    Macで作ったテキストデータの改行コードをWindows(DOS)改行コードに変換するソフトってあるんでしょうか?

専門家に質問してみよう