Получить Coldfusion для анализа запроса JSON - PullRequest
7 голосов
/ 26 января 2012

У меня есть объект javascript:

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

Я передаю его на страницу Coldfusion, используя jQuery:

$.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?

1 Ответ

12 голосов
/ 26 января 2012

я бы отправил данные в виде записи,

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

, а затем проанализировал их в переменную:

<cfset structJSON = deserializeJSON(FORM.json)>

В этот момент cfdump структурапроверить его содержимое, чтобы вы знали, как получить к ним доступ.

Поскольку мы не знаем, из чего состоит структура json, которую вы передаете в ColdFusion, я понятия не имею, что содержит structJSON.list или почему это будетвыдает ошибку.

Редактировать: А, теперь я вижу ваш json.

Ваш список недопустим, json, измените { и } на [ и ].

data = { color: "red", day: "monday", list: [1,2,3,4,5,6]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...