Coldfusion循环状态更新Ajax

时间:2011-02-14 09:23:51

标签: ajax loops coldfusion

我在Coldfusion中有一个可以运行很长时间的循环;大约2-4分钟。

我想在每次循环运行时显示状态更新。

循环:

<cfloop index="i" from=1 to=70>
    <cfset allHtmlFiles=getThirdXml.XmlRoot.XmlChildren[i].XmlChildren[1].XmlText>
    <cfset ArrayAppend(seekurl, allHtmlFiles)>
</cfloop>

负责显示数据的循环:

<cfloop index="loopcount" from=1 to=92>

    <cfset checkThisUrl = #seekurl[loopcount]#>
    <cfset completeUrl ="http://myurl.com/?ids=#checkThisUrl#">
    <cfhttp result="get" method="get" url="#completeUrl#">      
    <cfset nieuw =deserializeJSON( get.filecontent )>

        <cfoutput>
           <tr>
                <cfif nieuw[checkThisUrl].id IS NOT 0>
                    <td>#nieuw[checkThisUrl].id#</td>   
                </cfif>

                <cfif isDefined("nieuw[checkThisUrl].shares")>
                    <td style="text-align: right">#nieuw[checkThisUrl].shares#</td> 
                </cfif>
            </tr>
        </cfoutput>
</cfloop>

如何在每次运行时完成Ajax更新?

1 个答案:

答案 0 :(得分:3)

我这样做的方式就是用数据库中的唯一ID(如UUID)编写进度。然后,您可以使用AJAX轮询不同的脚本来获取脚本的进度。

数据库表可能如下所示:

InsertedOn        | Data           | UUID
2011-02-12 13:01  | MyProcessData1 | MyUUID1
2011-02-12 13:02  | MyProcessData2 | MyUUID1
2011-02-12 13:03  | MyProcessData3 | MyUUID1
2011-02-12 13:10  | MyProcessData1 | MyUUID2
2011-02-12 13:11  | MyProcessData2 | MyUUID2
2011-02-12 13:12  | MyProcessData3 | MyUUID2

例如:

  1. 使用AJAX请求启动上述过程。请求将作为线程启动上面的代码(因此它立即返回)并返回表示请求的UUID值
  2. 上述过程会将进度写入包含每个条目的UUID的数据库表
  3. 使用不同的脚本使用AJAX每隔几秒使用UUID值轮询以查找到目前为止的进度
  4. 也许还有其他方法!

    希望它有所帮助。 夏兰