2012-01-25 15 views
7

Ho un oggetto javascript:Get Coldfusion per analizzare una richiesta JSON

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

passo ad un pagina di ColdFusion utilizzando jQuery:

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

Questo è il mio cfdump:

enter image description here

(la "lista" in realtà conterrà un elenco di email ma sto solo testando con un indirizzo in questo momento)

in ColdFusion, sto cercando di assegnare ad ogni "parte" a una variabile:

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

Comunque sto ottenendo un errore con "lista",

Complex object types cannot be converted to simple values. 

Come faccio a analizzare l'elenco come Coldfusion?

risposta

12

avrei inviato i dati come un post var,

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

e poi analizzato in una variabile:

<cfset structJSON = deserializeJSON(FORM.json)> 

A quel punto, cfdump la struttura da ispezionare è contenuto in modo che sai come accedervi.

Poiché non sappiamo quale sia la struttura JSON che stai passando a ColdFusion, non ho idea di cosa contenga structJSON.list o perché genererebbe un errore.

Modifica: Ah, ora vedo il tuo errore.

Il tuo elenco non è valida JSON, cambiare { e }-[ e ].

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

Vedo ... aggiunto uno screenshot del mio cfdump. – redconservatory

Problemi correlati