Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 在coldfusion 9中,如何正确地提交包含“,”的表单文本输入数组&引用;在他们的文本中?_Html_Coldfusion_Coldfusion 9 - Fatal编程技术网

Html 在coldfusion 9中,如何正确地提交包含“,”的表单文本输入数组&引用;在他们的文本中?

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="

我想找到一个最好的方法提交下面的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="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页面,我认为您的想法会奏效他在回答中的评论在更改
后,我可以像你建议的解决方案那样循环。这不是一个“解决方案”,但可以直接用于我们需要的。