2012-01-25 20 views
7

Mam JavaScript Object:Get ColdFusion do analizowania żądania json

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

mijam ten do strony ColdFusion za pomocą jQuery:

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

To mój cfdump:

enter image description here

("lista" faktycznie będzie zawierać listę e-maili, ale ja po prostu testuję z jeden adres teraz)

W ColdFusion, próbuję przypisać każdego „część” do zmiennej:

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

Jednak ja otrzymuję błąd z „listy”,

Complex object types cannot be converted to simple values. 

Jak przeanalizować listę jako Coldfusion?

Odpowiedz

12

Ja bym wysłał dane w postaci postu var

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

a następnie analizowany go do zmiennej:

<cfset structJSON = deserializeJSON(FORM.json)> 

W tym momencie cfdump struktura aby sprawdzić jego zawartość tak, aby wiesz, jak uzyskać do nich dostęp.

Ponieważ nie wiemy, na czym polega struktura json, do której przechodzimy do ColdFusion, nie mam pojęcia, co zawiera structJSON.list lub dlaczego spowodowałby błąd.

Edytuj: Ah widzę teraz twojego jsona.

Twoja lista nie jest prawidłowy json, zmień { i } do [ i ].

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

Widzę ... dodano zrzut ekranu mojego cfdump. – redconservatory