我有一些数据,我必须在Ajax调用后返回。在我的.cfc
页面上,我有转换数据的逻辑。每列都以制表符分隔,每行用CRLR分隔。我将cffunction
返回格式设置为JSON
。在我返回数据后,我使用JavaScript以所需格式分隔列和行。在我这样做的时候,我看到很少有博客,人们在ColdFusion 9中讨论JSON
的所有问题。在我的开发网站上,我使用的是ColdFusion 10,我没有注意到我的数据有任何问题。但在现场我有ColdFusion 9,我想知道这是否会引起一些问题。在我的数据中,我有像地址这样的字段,这个字段允许所有类型的字符。如果您的数据类似于2131231D
,如果字符串和整数的组合以D
结尾,则coldfusion 9中的返回类型JSON会出现问题.JSON将不会返回相同的数据。所以我的问题是我应该在这种情况下做些什么?这个问题有什么问题吗? JSON是否可靠并建议在ColdFusion 9中使用?我还在寻找一些可以在.cfc页面上转换数据的工具,这样我可以避免使用cffunction returnformat='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);
});
}
答案 0 :(得分:0)
保持您的开发和生产环境尽可能相似是最佳做法。它减少了这些&#34;陷阱&#34;将代码推送到Production时。
ColdFusion 10的JSON序列化器/解串器比CF9有了很大的改进。如果您正在使用大量JSON,那么在Production上升级到CF10是个好主意。在此之前,使用单独的序列化程序可以提供帮助。
我怀疑&#34; json cfc&#34; @KevinB提到Ben Nadel's JsonSerializer.cfc。它可以在https://github.com/kevindb/JsonSerializer.cfc上的Github上使用(分叉版,有一些额外的功能)