2017-07-10 6 views
0

私はフィールドが100を超える単純なフォームを持っています。これらのフィールドはすべて、cffunctionに送信されます。ここで、InsertまたはUpdateクエリを実行するSQLコードがあります。ここに私のコードの例は次のとおりです。ColdFusion9で動的cfargumentsを構築する方法は?

ここ
var formData = $('#'+frmID).serialize(); 
    $.ajax({ 
     type: 'POST', 
     url: 'Components/MyFunction.cfc?method=userRecord', 
     data: formData, 
     dataType: 'json' 
    }).done(function(obj){ 
     if(obj.STATUS === 200){ 
      return true; 
     }else{ 
      return false; 
     } 
    }).fail(function(jqXHR, textStatus, errorThrown){ 
     alert(errorThrown); 
    }); 

あるのcffunction:

<cffunction name="userRecord" access="remote" output="true" returnformat="JSON"> 
    <cfargument name="userID" type="string" required="true"> 
    <cfargument name="userFName" type="string" required="true"> 
    <cfargument name="userLName" type="string" required="true"> 
    <cfargument name="userDOB" type="string" required="true"> 
    <cfargument name="userGender" type="string" required="true"> 
    <cfargument name="userAddress" type="string" required="true"> 
    <cfargument name="userCity" type="string" required="true"> 
    .... And there is more field in this form 


    <cfset fnResults = StructNew()> 
    //Here is SQL query for insert and update 
    <cfreturn fnResults> 
</cffunction> 

代わりのcfloopを使用して動的にすべての引数を収集する方法があり、手動ですべての引数を作成しますか?記事や例が見つかりませんでした。それは良いオプションか手動で引数を作成する方が良い方法でしょうか?誰かが助けてくれたら教えてください。ありがとうございました!

+1

この場合、すべてのフィールドを1つの構造に渡すことはできませんか? – Vineesh

+0

@Vineeshそれは私がすでに持っているものをどう変えますか? –

+0

@espresso_coffeeは、フォーム構造体全体を関数に渡します。したがって、すべてのフォームフィールドの構造体である1つの引数しか受け入れられません。 –

答えて

2

構造としてデータを渡してみてください。

<cffunction name="userRecord" access="remote" output="true" returnformat="JSON"> 
    <cfargument name="formData" type="structure" required="true"> 

    <cfloop collection="#arguments.formData#" item="key"> 
     #key#: #arguments.formData[key]# 
    </cfloop> 

    <cfset fnResults = StructNew()> 
    //Here is SQL query for insert and update 
    <cfreturn fnResults> 
</cffunction> 
+0

cfloopで引数を作成したい。私は自分のフォームに100以上の引数を持っており、私はそれらのそれぞれをハードコードしたくありません。 –

+0

' #key#:#myStructure [key]# 答えで更新されました – Vineesh

1

フォームデータ全体を構造体として渡します。

var formData = $('#'+frmID).serializeArray(); 
$.ajax({ 
    type: 'POST', 
    url: 'Components/MyFunction.cfc?method=userRecord', 
    data: formData, 
    dataType: 'json' 
}).done(function(obj){ 
    if(obj.STATUS === 200){ 
     return true; 
    }else{ 
     return false; 
    } 
}).fail(function(jqXHR, textStatus, errorThrown){ 
    alert(errorThrown); 
}); 

<cffunction name="userRecord" access="remote" output="true" returnformat="JSON"> 
    <cfargument name="form" type="struct" required="true"> 
    <cfdump var="#arguments.form#"> 

</cffunction> 
+0

cfarumentsの名前の取得方法は? –

+0

私は答えのように引数をダンプしますか? –

+0

cfloopを使用して、各引数の名前を取得できますか? –

関連する問題