2016-12-01 82 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