Javascript ColdFusion 9/10从AT JSON返回?

Javascript ColdFusion 9/10从AT JSON返回?,javascript,json,ajax,coldfusion,cffunction,Javascript,Json,Ajax,Coldfusion,Cffunction,在Ajax调用之后,我必须返回一些数据。在我的.cfc页面上,我有转换数据的逻辑。每列用制表符分隔,每行用CRLR分隔。我将我的cffunctionreturnformat设置为JSON。返回数据后,我使用JavaScript以所需格式分隔列和行。当我这么做的时候,我看到很少有人在博客上谈论ColdFusion 9中的JSON的各种问题。在我的开发站点上,我使用ColdFusion 10,我没有注意到我的数据中有任何问题。但是在现场我有ColdFusion 9,我想知道这是否会引起一些问题。在我

在Ajax调用之后,我必须返回一些数据。在我的
.cfc
页面上,我有转换数据的逻辑。每列用制表符分隔,每行用CRLR分隔。我将我的
cffunction
returnformat设置为
JSON
。返回数据后,我使用JavaScript以所需格式分隔列和行。当我这么做的时候,我看到很少有人在博客上谈论ColdFusion 9中的
JSON
的各种问题。在我的开发站点上,我使用ColdFusion 10,我没有注意到我的数据中有任何问题。但是在现场我有ColdFusion 9,我想知道这是否会引起一些问题。在我的数据中,我有地址这样的字段,这个字段允许所有类型的字符。如果您的数据是这样的,那么coldfusion 9中的返回类型JSON就有问题,例如
2131231D
如果字符串和整数的组合以
D
结尾,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>

保持您的开发和生产环境尽可能相似是一种最佳实践。当您将代码推送到生产环境中时,它会减少这些类型的“陷阱”

ColdFusion 10的JSON序列化器/反序列化器比CF9有了很大的改进。如果您使用大量JSON,那么在生产环境中升级到CF10是一个好主意。在这成为可能之前,使用单独的序列化程序会有所帮助


我怀疑@KevinB提到的“json cfc”。它在Github(分叉版本,带有一些额外的功能)上提供,

我没有遇到您描述的问题,但是如果您遇到了,您可以随时切换到使用json cfc。如果生产中有CF9,为什么要在dev中使用CF10?@KevinB有json cfc的例子吗。?系统中存在很多问题,当我们尝试将live site更新为10时,我们遇到了一个错误。我觉得奇怪的是,您从函数返回以制表符分隔的数据。。。。我不知道coldfusion能够自动将其转换为有用的json。除非它只是将其转换为字符串,否则在这种情况下,您可能不会有太多的担心。这是唯一可以确定的方法。我在使用CF和JSON时遇到的唯一问题有时与隐式转换有关,主要是处理
bigint
。如果CF想要将某个内容变为数字,则尝试将其强制为字符串可能会很困难。
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);
 });
}