Html 在coldfusion 9中,如何正确地提交包含“,”的表单文本输入数组&引用;在他们的文本中?
我想找到一个最好的方法提交下面的html到cfc函数Html 在coldfusion 9中,如何正确地提交包含“,”的表单文本输入数组&引用;在他们的文本中?,html,coldfusion,coldfusion-9,Html,Coldfusion,Coldfusion 9,我想找到一个最好的方法提交下面的html到cfc函数 <form action="test.cfc"> <input type="hidden" name="method" value="save"> <input type="text" name="mytext[]" value="f,oo"> <input type="text" name="mytext[]" value="bar"> <input type="
<form action="test.cfc">
<input type="hidden" name="method" value="save">
<input type="text" name="mytext[]" value="f,oo">
<input type="text" name="mytext[]" value="bar">
<input type="submit">
</form>
test.cfc文件内容:
<cfcomponent displayname="test">
<cffunction name="init">
<cfreturn this>
</cffunction>
<cffunction name="save" output="false" returnformat="JSON" access="remote">
<cfargument name="mytext" type="string" required="true">
<!--- ***comments***
i want to do this:
<cfloop list="arguments.mytext" index="curRowValue">
<cfquery blah blah...>
insert into fooBar (stuff) values (curRowValue)
</cfquery
</cfloop>
--->
<cfreturn arguments>
</cffunction>
</cfcomponent>
“test.save()”函数将在我的设置
{mytext:“f,oo,bar”}
中返回此json,如果我取消对插入代码的注释,它将插入3行而不是2行。将用户输入的文本和coldfusion的标准列表分隔符混合在一起的正确方法是什么?Brian Kotek的FormUtilities非常适合这一点。我无法想象回到我构建的所有表单中都不使用它:在处理程序中,如果您访问ColdFusion表单作用域本身,您会看到CF将相同的命名表单字段值减少为单个键值对,值与逗号混合在一起毫无帮助
但您也可以访问原始请求数据并解析出键值对——不管是否存在键名冲突,每个键值对都是不同的。以下是一种快速循环“实际”发布值的方法:
arFormscope = gethttprequestdata().content.split('&');
for( i=1; i<=arraylen(arFormscope); i++ ){
arElement = arFormscope[i].split('=');
key = urldecode(arElement[1]);
value = urldecode(arElement[2]);
do_something_with( key, value ); // <-- your logic here
// value == f,oo on first pass
// value == bar on second pass
}
arFormscope=gethttprequestdata().content.split('&');
对于(i=1;我的问题是由这个问题引起的:+1好主意,这是一个不错的解决办法。但是,我需要将test.save()中的'arguments'结构传递给a它还能工作吗?您可以更改save()采取一种结构,也就是说,在你的动作页面上,这将是一个.cfm页面而不是一个.cfc页面,你可以使用marc,这个解决方案可以工作,我喜欢它,但需要对现有的、陈旧的、尘封的、可怕的代码进行大的重构。使用Ken关于向后兼容性的回答,将其替换为和“内容”返回的JSON中的字符串为空。在表单提交上调用cfc函数要求cfc函数具有“access=remote”安全性。我相信coldfusion正在解析表单,并对具有“arguments”作用域的函数重新请求。如果我将表单操作更改为中提到的marc esher那样的cfm页面,我认为您的想法会奏效他在回答中的评论在更改
后,我可以像你建议的解决方案那样循环。这不是一个“解决方案”,但可以直接用于我们需要的。