我有一个
javascript对象:
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:
(“列表”实际上将包含电子邮件列表,但我现在只测试一个地址)
在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>
但是我收到“list”错误,
Complex object types cannot be converted to simple values.
如何将列表解析为Coldfusion?
解决方法
我会把数据作为post 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,6]}