Недавно я переместил свой код из CF9 в CF11, и у меня возникают проблемы, когда я пытаюсь использовать serializeJSON
. Согласно CF документации:ColdFusion 11 Сохранение типа данных во время сериализации
Начиная с ColdFusion 11, сохраняется тип данных во время выполнения кода для запросов и ХФУ.
SerializeJSON рассматривает типы данных, определенные в базе данных для сериализации . Если база данных определяет столбец как строку, любой номер , вставленный в столбец, по-прежнему будет обрабатываться как строка на SerializeJSON.
Но я думаю, это не тот случай ....
Когда я потянув данные из столбца VARCHAR в CF9 он выходит как этот "docid":"123"
чего я хочу, но в то же самое CF11 данные выглядят так: "docid":123
и вызывает проблему с тем, что я пытаюсь сделать.
Чтобы быть более конкретным, мои идентификаторы выглядят следующим образом: 2001101009460111385185
, который длиннее, чем Javascript может принять, и они преобразуются в научную нотацию. В старом формате у меня не было этой проблемы, потому что мои идентификаторы рассматривались как строка, которую я хочу.
Note: my code is exactly the same on both versions of CF
У кого-то была эта проблема раньше и КАК вы ее обошли?
Образец кода
Я вызываю эту функцию с помощью вызова AJAX, эта функция возвращает массив со структурой в нем. Когда я сбрасываю возвращаемое значение после того, как я сериализую результат, я вижу объект JSON в моей консоли, но кавычки отсутствуют во всех значениях числа. В тестовом файле я создал простой запрос, а затем я сериализация результаты и все выглядит хорошо ......
<cffunction name="locationData" returnformat="json" access="remote">
<cfargument name="locationid" required="yes" type="string">
<cfargument name="clientBrandid" required="yes" type="string">
<cfscript>
locationData = new mod_sigweb.components.xamplifierCFCs.location_info();
result = locationData.getLocation(locationid,clientBrandid);
</cfscript>
<cfdump var="#serializeJSON(result[1],'struct')#">
<cfabort>
<cfreturn #result#>
</cffunction>
Какое обновление CF11 вы используете? Недавно была исправлена ошибка, которая была подобна этому. В случае ошибки он преобразовывал строку «Нет» в значение false после ее сериализации. – haxtbh
ColdFusion 11 Update 4, и в настоящее время нет доступных обновлений. Я создал тестовый файл, и сериализация работает, но когда я отправляю его обратно в javascript из моей функции, удаляет цитаты из любого числового значения. – Geo
Я только что протестировал ошибку, о которой я упоминал в обновлении 4, и кажется, что она все еще сломана. :/ – haxtbh