我有一些数据必须在Ajax调用后返回。在我的.cfc
页面上,我拥有转换数据的逻辑。每列都用制表符分隔,每行用CRLR分隔。我的cffunction
returnformat设置为JSON
。在我返回数据后,我使用JavaScript以所需的格式分隔列和行。在我这样做的时候,我看到很少有博客在讨论ColdFusion 9中的JSON
的所有问题。在我的开发站点上,我使用ColdFusion 10,并且我没有注意到我的数据有任何问题。但在现场我有ColdFusion 9,我想知道这是否会导致一些问题。在我的数据中,我有像地址这样的字段,这个字段允许所有类型的字符。如果你的数据是这样的,例如2131231D
,如果字符串和整数的组合结束为D
,那么在coldfusion 9中返回类型JSON会有问题.JSON不会返回相同的数据。所以我的问题是我在这种情况下应该做什么?有没有解决这个问题? JSON是否可靠并推荐在ColdFusion 9中使用?我也在寻找一些工具,将我的数据转换.cfc页面,我可以避免cffunction returnformat='JSON'
。这里是我的代码:ColdFusion 9/10返回fromat 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,如果你有生产中的CF9? –
@KevinB你有没有json cfc的例子?这是系统中的很多问题,当我们尝试将活动网站更新到10时,我们遇到了一些错误。 –
对于我来说,看起来很奇怪的是,您从功能返回制表符分隔的数据....我不知道Coldfusion将能够自动将其转换为有用的json。除非把它变成一个字符串,在这种情况下,你可能不会有太多担心。 –