2012-01-25 16 views
7

Tengo un objeto de javascript:Obtener ColdFusion para analizar una solicitud JSON

data = { color: red, day: monday, list: {1,2,3,4,5,6}} 

paso esta a una página ColdFusion utilizando jQuery:

$.ajax({ 
       type: "POST", 
       url: "ajax_myPage.cfm", 
       data: JSON.stringify(data), 
       contentType: "application/json", 
       dataType: "json" }); 

Esta es mi cfdump:

enter image description here

(la "lista" en realidad contendrá una lista de correos electrónicos, pero solo estoy probando con una dirección en este momento)

en ColdFusion, estoy tratando de asignar a cada "parte" de una variable:

<cfset requestBody = toString(getHttpRequestData().content) /> 
<!--- Double-check to make sure it's a JSON value. ---> 
<cfif !isJSON(requestBody)> 

<!--- Echo back POST data. ---> 
<h3>The URL you requested does not provide valid JSON</h3> 
<cfdump 
var="#requestBody#" 
label="HTTP Body" 
/> 
<cfelse> 
<cfset cfData=DeserializeJSON(requestBody)> 
<cfset color = cfData.color> 
<cfset day = cfData.day> 
<cfset myList = cfData.list> 
</cfif> 

Sin embargo estoy recibiendo un error "lista",

Complex object types cannot be converted to simple values. 

¿Cómo puedo analizar la lista como Coldfusion?

Respuesta

12

i habría enviado los datos como un puesto var,

data: { json: JSON.stringify(data) } 

y luego analizada en una variable:

<cfset structJSON = deserializeJSON(FORM.json)> 

En ese punto, cfdump la estructura para inspeccionar su contenido de manera que usted sabe cómo acceder a ellos.

Dado que no sabemos en qué consiste la estructura json que está transfiriendo a ColdFusion, no tengo idea de qué contiene structJSON.list o por qué arrojaría un error.

Editar: Ah veo tu json ahora.

Su lista no es válida json, cambie { y } por [ y ].

data = { color: "red", day: "monday", list: [1,2,3,4,5,6]} 
+0

Veo ... agregué una captura de pantalla de mi cfdump. – redconservatory

Cuestiones relacionadas