преобразование результатов запроса Coldfusion в форматированный массив javascript - PullRequest
1 голос
/ 18 августа 2011

Я пытаюсь написать код 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 ]

2 голосов
/ 18 августа 2011

Из того, что я вижу, ваш объект выглядит неправильно, но я не уверен, что вы делаете с ним, поэтому я не уверен, как сделать это правильно для вас, поэтому у меня просто небольшой пример.

<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 голос
/ 18 августа 2011

В продолжение того, что сказал Дэн, я бы сделал что-то вроде этого (при условии, что вы не используете ХФУ):

<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>
1 голос
/ 18 августа 2011

Вы можете попробовать функцию serializeJSON в CF8 или CF9, которая возьмет любой объект ColdFusion и превратит его в пригодную для использования строку JSON.Это может быть использовано в ваших функциях JavaScript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...