4

I have created a javascript object

var spanglist = {
    one: q1,
    two:q2,
    three:q3,
    four: q4};

I create the ajax jquery object to send the data to the CFC:

$.ajax({            
           url: 'gridly/components/pay.cfc',            
           type:"POST",            
            dataType:' json',            
            data: {method: "structFromJSobjt",            
                   returnFormat:"json",            
                   jsStruct: spanglist}
    });

in my cfc I have the following simple code:

<cffunction name="structFromJSobj" access="remote" output="false" >
    <cfargument name="jsStruct" required="true" default=""  />
    <!--- AT this point I would like to work with the data contained in the jsStruct object.  I can't access the data regardless of the typeI make the cfargument --->      
</cffunction>

Can someone poit me in the direction to play with the data once it is in the cffunction.

James A Mohler
  • 11,060
  • 15
  • 46
  • 72
Michael BW
  • 1,070
  • 3
  • 13
  • 26

1 Answers1

7

Personally, I would make only slight changes. For example:

$.ajax({            
           url: 'gridly/components/pay.cfc',            
           type:"POST",            
            dataType:' json',            
            data: {method: "structFromJSobjt",            
                   returnFormat:"json",            
                   jsStruct: JSON.stringify(spanglist)}
    });

And on the CF side:

<cffunction name="structFromJSobj" access="remote" output="false" >
    <cfargument name="jsStruct" required="true" type="string"  />
    <cfset var cfStruct = DeserializeJSON(arguments.jsStruct)>

    <!--- now use your structure --->
</cffunction>

The one thing to note about this is the spotty availability of the JSON.stringify() method in some browsers. So I recommend getting json2.js from http://www.json.org/

Jake Feasel
  • 16,785
  • 5
  • 53
  • 66
  • thank you very much for your assistance. this just seemed like such a natural thing to want to do so I could verify the parameters better on the client side before sending it to the server. Once again, thanks. – Michael BW Dec 05 '11 at 13:21