ユーザーがワードドキュメントからテキストをコピーして貼り付けるフォームがあります。このコンテンツにはタブ文字が含まれる場合があります。オンクリック関数は、coldfusionリモート関数へのJSMXajax呼び出しを使用してフォームの送信を処理します。フォームはajax呼び出しを介してコンポーネントに渡されます。
<form name="test">
<textarea name="swPurpose"></textarea>
<input type="button" value=" Go " onclick="goForm(this.form);" />
</form>
function goForm(f){
var param=f;
http('POST','testCFC.cfc?method=test',goForm_RTN,param);
}
<cfcomponent output="false">
<cffunction name="test" access="remote" output="false">
<cfset rtn=structNew()/>
<cfsavecontent variable="rtn.html">
<cfoutput><p>#form.swPurpose#</p></cfoutput>
</cfsavecontent>
<cfreturn rtn />
</cffunction>
</cfcomponent>
これは、タブ文字がフォームのコンテンツに含まれていない限り、非常にうまく機能します。コンテンツにタブがある場合、500内部サーバーエラーが発生します。
これは、フォームで送信されたサンプルテキストです。
1これはテキストです 2これはテキストです 3これはテキストです
これは、関数に投稿されるFirebugからのエンコードされたテキストです。
swPurpose = 1%9This%20is%20text%0a2%9This%20is%20text%0a3%9This%20is%20text&btn =%20OnClick%20、%20Submit%20
Firebugを使用すると、関数に投稿されたコンテンツがエンコードされていることがわかります。タブは%9です。フォームのアクションにcfcを入れることができますが、関数は失敗しません。
私の回避策は、関数に送信する前にjavascriptを使用してタブを取り除くことです。ただし、タブが500エラーを引き起こしている理由と、これを防ぐためにできることがあるかどうかを理解したいと思います。