私は、ユーザーがワードdocからテキストをコピーして貼り付けるフォームを持っています。このコンテンツにはタブ文字を含めることができます。 on-click関数は、ColdFusionリモート関数へのJSMX ajax呼び出しを使用してフォーム送信を処理します。フォームはajax呼び出しを介してコンポーネントに渡されます。タブ文字が原因でajax coldfusionコンポーネントが失敗する500 Internal Server Error
<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 Internal Server Errorが発生します。
これは、フォームで送信されたサンプルテキストです。
1 This is text 2 This is text 3 This is text
これは、機能に送信されるFirebugのエンコードされたテキストです。
swPurpose=1%9This%20is%20text%0a2%9This%20is%20text%0a3%9This%20is%20text&btn=%20OnClick%20,%20Submit%20
ファイヤーバグを使用すると、機能に投稿されたコンテンツがエンコードされていることがわかります。タブは%9です。私はcfcをフォームの動作に置くことができ、関数は失敗しません。
私の回避策は、機能に送信する前にjavascriptを使用してタブを取り除くことです。しかし、なぜタブが500エラーを引き起こしているのか、これを防ぐためにできることがあれば理解したいと思います。
非常に不思議です。私は自分自身でこれをテストすると思います。 –
ファンクションコードを 'に変更するとどうなりますか? –