serializeJSON между ColdFusion 8 и ColdFusion 10

У меня есть функция, которая возвращает строку JSON, а ColdFusion 10 возвращает немного другое значение, чем ColdFusion 8.

В CF10 я получаю

{"ZIPCODE":90210,"PHONE":"(555) 382-6630","LAT":83,"DISTANCE":74,"NAME":"Pueblo, CO","ADDRESS":"6830 Meddley Drive","LONG":104}

но в CF8 я понимаю это

{\"DISTANCE\":74,\"LAT\":83,\"ZIPCODE\":90210,\"NAME\":\"Pueblo, CO\",\"PHONE\":\"(555) 382-6630\",\"ADDRESS\":\"6830 Medley Drive\",\"LONG\":104.}

Для функции я установил returnformat в JSON и использую serializeJSON() для возвращаемого значения. Я вызываю функцию с помощью метода jQuery $.ajax с dataType установленным на JSON

Обратная косая черта из CF8 вызывает ошибки в javascript, используемом для анализа данных. Почему это происходит, и есть ли обходной путь?


person RHPT    schedule 23.09.2013    source источник
comment
CFC автоматически вернет его в формате JSON, поэтому вызов serializeJSON() JSON уточняет JSON. Что эффективно экранирует все специальные символы с помощью обратной косой черты. Попробуйте без звонка serializeJSON().   -  person imthepitts    schedule 24.09.2013
comment
@imthepitts - (Изменить) Да, нет необходимости использовать оба. (Вы даже можете опустить оба и просто использовать параметр URL-адреса ?returnformat=json, чтобы указать, что вы хотите получить результат в формате json). В любом случае, вы должны написать это как ответ, кстати.   -  person Leigh    schedule 24.09.2013
comment
Интересно, почему это не проблема с CF10 ...   -  person RHPT    schedule 24.09.2013
comment
Хорошо, если он не выполняет двойную сериализацию (как код указывает CF), тогда они, очевидно, добавили некоторую логику в качестве меры защиты. CF должен определить, сериализован ли уже результат, и если да, то он возвращает результат как есть.   -  person Leigh    schedule 24.09.2013


Ответы (1)


я предполагаю, что cf10 автоматически возвращает его в формате json, а cf8 - нет.

person snake    schedule 01.10.2013
comment
Нет, на основе результатов CF10 достаточно умен, чтобы распознать, что код непреднамеренно сериализует результат дважды (т. е. использует как serializeJSON() и returnformat="json"), так что он должен игнорировать один из них. В CF8 такой возможности нет, поэтому результат сериализуется дважды. - person Leigh; 02.10.2013