2011-08-17 97 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>