将Coldfusion查询结果转换为格式化的javascript数组

时间:2011-08-17 22:52:08

标签: java javascript sql arrays coldfusion

我正在尝试编写ColdFusion代码运行查询然后将结果放入一个特定格式的数组中。

查询:

<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>

我如何做到这一点?

3 个答案:

答案 0 :(得分: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>

这将构建一个对象数组,每个对象都有属性“name”和“type”,其中包含从查询中填充的值。

答案 1 :(得分:1)

您可以在CF8或CF9中尝试serializeJSON函数,它将获取任何ColdFusion对象并将其转换为可用的JSON字符串。然后可以在JavaScript函数中使用它。

答案 2 :(得分:1)

扩展丹说我会做这样的事情(假设你没有使用CFC):

<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>

由于我很长时间没有使用标签,因此代码中可能会出现一些语法错误,但您应该了解我在这里要完成的工作。首先,我们将创建一个函数来将查询的输出解析为结构,然后我们将该结构传递给searalizeJSON,这将为您提供格式良好的JSON对象(请注意,调用后键的大小写可能会有所不同) searilizeJSON)。然后,您在页面上所要做的就是:

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

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