ColdFusion 9/10返回fromat JSON?

时间:2016-12-01 16:15:44

标签: javascript json ajax coldfusion cffunction

我有一些数据,我必须在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);
 });
}

1 个答案:

答案 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上使用(分叉版,有一些额外的功能)