我有一个表单,用户可以从 Word 文档中复制和粘贴文本。此内容可能包含制表符。点击函数使用 JSMX ajax 调用 Coldfusion 远程函数来处理表单提交。表单通过 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 错误,以及是否可以采取任何措施来防止这种情况发生。