У меня есть данные, которые я должен вернуть после вызова Ajax. На моей странице .cfc
у меня есть логика, которая преобразует данные. Каждый столбец разделен на вкладку, и каждая строка разделяется CRLR. У меня есть cffunction
returnformat, установленный на JSON
. После того, как я верну данные, я использую JavaScript для разделения столбцов и строк в желаемом формате. В то время как я делал это, я видел несколько блогов, где люди говорили о всех проблемах с JSON
в ColdFusion 9. На моем сайте разработки я использую ColdFusion 10, и я не заметил никаких проблем с моими данными. Но на живом сайте у меня ColdFusion 9, и мне было интересно, не вызовет ли это некоторые проблемы. В моих данных у меня есть поля, такие как Address, и это поле позволяет использовать все типы символов. Тип возврата JSON в coldfusion 9 имеет проблему, если ваши данные похожи на это, например, 2131231D
, если комбинация строк и целых чисел заканчивается D
JSON не вернет те же данные. Итак, мой вопрос - что я должен делать в этой ситуации? Есть ли какое-либо исправление для этой проблемы? Является ли JSON надежным и рекомендуется использовать в ColdFusion 9? Я искал также инструмент, который будет конвертировать мои данные на страницу .cfc таким образом, я могу избежать cffunction returnformat='JSON'
. Вот мой код:Возврат ColdFusion 9/10 из JSON?
<cfcomponent>
<cffunction name="getData" access="remote" output="true" returnformat="JSON">
<cfset fncResults = StructNew()>
<cfif myFile = true>
<cfoutput query="myData">
//Here I organize my data
</cfoutput>
<cfset getList = arrayToList(buffer,crlf)/>
<cfset fncResults.status = "200">
<cfset fncResults.fileData = #getList#>
<cfelse>
<cfset fncResults.status = "400">
<cfset fncResults.message = "The file was not properly uploaded.">
</cfif>
<cfreturn fncResults>
</cffunction>
</cfcomponent>
Вот мой JavaScript:
function getFile(){
$.ajax({
type: 'POST',
url: 'Components/test.cfc?method=getData',
data: new FormData($('#myForm')[0]),
cache: false,
dataType: 'json'
}).done(function(obj){
if(obj.STATUS === 200){
return obj.FILEDATA;
}else{
return false;
}
}).fail(function(jqXHR, textStatus, errorThrown){
alert(errorThrown);
});
}
Я не сталкивался с проблемой, которую вы описываете, но если вы это делаете, вы всегда можете переключиться на использование json cfc. Почему вы используете CF10 в dev, если у вас CF9 в производстве? –
@KevinB У вас есть пример json cfc.? Много проблем в системе, и мы получали ошибки, когда пытались обновить сайт в реальном времени до 10. –
Мне кажется странным, что вы возвращаете данные с разделителями табуляции из своей функции .... я не знал coldfusion сможет преобразовать это автоматически в полезный json. Если только это не превратит его в строку, и в этом случае вам, вероятно, не о чем беспокоиться. –