2016-12-01 79 views
-1

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

我还没有遇到你描述的问题,但如果你这样做,你可以随时切换到使用json cfc。为什么你在开发中使用CF10,如果你有生产中的CF9? –

+0

@KevinB你有没有json cfc的例子?这是系统中的很多问题,当我们尝试将活动网站更新到10时,我们遇到了一些错误。 –

+0

对于我来说,看起来很奇怪的是,您从功能返回制表符分隔的数据....我不知道Coldfusion将能够自动将其转换为有用的json。除非把它变成一个字符串,在这种情况下,你可能不会有太多担心。 –

回答

0

保持你的开发和生产环境尽可能相似,对方是最好的做法。它将代码推送到Production时减少了这些“陷阱”。

ColdFusion 10的JSON串行器/解串器比CF9有了很大的改进。如果您正在处理大量的JSON,那么在Production上升级到CF10是个不错的主意。在这种可能性之前,使用单独的序列化程序可以提供帮助。

我怀疑@KevinB提到的“json cfc”Ben Nadel's JsonSerializer.cfc。它在Github上可用(带有一些额外的功能)https://github.com/kevindb/JsonSerializer.cfc