2012-01-25 85 views
7

我有一個JavaScript對象:獲得ColdFusion的解析JSON請求

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

我使用jQuery它傳遞給一個ColdFusion頁:

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

這是我cfdump:

enter image description here

(「列表」實際上將包含一個電子郵件列表,但我只是測試與一個地址現在)

ColdFusion的,我想分配給每個「零件」給一個變量:

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

但是我跟「名單」得到一個錯誤,

Complex object types cannot be converted to simple values. 

我如何將列表解析爲Coldfusion?

回答

12

我會發來的數據作爲後VAR,

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

,然後解析它變成一個變量:

<cfset structJSON = deserializeJSON(FORM.json)> 

在這一點上,cfdump檢查它的內容結構,使你知道如何訪問它們。

因爲我們不知道你傳遞給ColdFusion的json結構是由什麼組成的,所以我不知道structJSON.list包含什麼或者它爲什麼會拋出錯誤。

編輯:啊,我現在看到你的json。

您的列表無效json,將{}更改爲[]

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

我明白了...添加了我的cfdump的屏幕截圖。 – redconservatory