2011-08-17 111 views
1

我正在編寫ColdFusion代碼運行查詢,然後將結果放入特定格式的數組中。將Coldfusion查詢結果轉換爲格式化的javascript數組

查詢:

<cfquery name="get_cbox" datasource="ds" username="un" password="pw"> 
    SELECT CBOXADD, MFLPU, SATLPU, BOXTYPE 
    FROM myTable 
</cfquery> 

和陣列與1種元素的樣子:

<script type="text/javascript"> 
    var addresses = [{ name: "<table width=100% style='font-size:14px'><td rowspan='3'>OBS:1</td><tr><td>"#cboxadd#"</td><td align='right'>LPU M-F: "#mflpu#"</td></tr><tr><td>Barrigada Guam, 96910 ("#boxtype#")</td><td align='right'>LPU Sat: "#satlpu#"</td></tr></table>", to: #cboxadd#", Barrigada Guam, 96910" }]; 
</script> 

如何做到這一點?

回答

2

從我看到你的對象看起來不對,但我不確定你在做什麼,所以我不確定如何使它適合你,所以我只是一個小例子。

<cfquery name="get_cbox" datasource="ds" username="un" password="pw"> 
    SELECT CBOXADD, MFLPU, SATLPU, BOXTYPE 
    FROM myTable 
</cfquery> 

<cfset arrString = ""> 
<cfloop from="1" to="get_cbox.recordcount" index="i"> 
    <cfset arrString = listAppend(arrString,"{'name':'#get_cbox.CBOXADD[i]#','type':'#get_cbox.BOXTYPE[i]#'}")> 
</cfloop> 
<cfoutput> 
<script type="text/javascript"> 
    var addresses = [#arrString#]; 
</script> 
</cfoutput> 

這將生成對象的數組,每個對象具有屬性「名稱」,並與來自查詢填充值「類型」。

1

您可以嘗試使用CF8或CF9中的serializeJSON函數,該函數將接受任何ColdFusion對象並將其轉換爲可用的JSON字符串。那可以在你的JavaScript函數中使用。

1

擴展在什麼丹說我會做這樣的事情(假設你不使用氟氯化碳):

<cfquery name="get_cbox" datasource="ds" username="un" password="pw"> 
    SELECT CBOXADD, MFLPU, SATLPU, BOXTYPE 
    FROM myTable 
</cfquery> 

<cfset myStruct = parseQuery(get_cbox)> 

<cfset pageJSON = SearilizeJSON(myStruct)> 

<cffunction name="parseQuery" output="struct"> 
    <cfargument name="query" type="query"> 
    <cfset var html = ""> 
    <cfset var retStruct = StructNew()> 

    <cfloop query="#arguments.query#"> 
     <cfset html = "<table width=100% style='font-size:14px'><td rowspan='3'>OBS:1</td><tr><td>"#cboxadd#"</td><td align='right'>LPU M-F: "#mflpu#"</td></tr><tr><td>Barrigada Guam, 96910 ("#boxtype#")</td><td align='right'>LPU Sat: "#satlpu#"</td></tr></table>"> 
     <cfset retStruct.name = htnml> 
     <cfset retStruct.to = CBOXADD> 
    </cfloop> 

    <cfreturn returnStruct> 
</cffunction> 

因爲我沒有在很長一段時間使用的標籤代碼可能有幾個語法錯誤,但你應該得到我想要完成的東西的要點。首先,我們將創建一個函數將查詢的輸出解析爲結構,然後我們將該結構傳遞給JSON,這將給您一個格式良好的JSON對象(請注意,調用後的鍵的情況可能會有所不同searilizeJSON)。那麼你所要做的就是:

<script type="text/javascript"> 
    var addresses = #pageJSON#; 

    for(var i=0;i<addresses.length;i++){ 
     addresses[i].html.... 
     addresses[i].name.... 
    } 
</script>