1

以下の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"} 、挿入コードのコメントを外した場合、2 行ではなく 3 行を挿入するセットアップでこの json を返します。ユーザーが入力したテキストとcoldfusionの標準リスト区切り文字を混在させる正しい方法は何ですか?

4

2 に答える 2

1

In the handler, if you access the ColdFusion form scope itself, you've seen that CF will reduce same-named form field values to a single key-value pair, with values unhelpfully mashed together with commas.

But you can also access the raw request data and parse out the key-value pairs -- each of which will be distinct regardless of whether there are key name collisions. Here's a quick way to loop through the "actual" posted values:

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
}

With your sample data, you'll get one pass through the loop for each mytext[] form field.

As a side note, you'll also get a trip through the loop for the submit button itself.

于 2011-03-11T21:50:23.517 に答える
1

Brian Kotek の FormUtilities はこれに最適です。私が構築するすべてのフォームにこれを使用しないことに戻ることは想像できません: http://www.briankotek.com/blog/index.cfm/2007/9/4/Implicit-Creation-of-Arrays-and-Structures -フォームフィールドから

于 2011-03-11T20:43:34.283 に答える