AJAX将进行实时数据库调查,如Twitter在Coldfusion中的“实时结果”

时间:2009-11-03 17:47:26

标签: javascript sql-server ajax coldfusion

我想做一些类似于twitter搜索使用AJAX创建“实时结果”的方式。似乎每隔15秒左右轮询一次数据库,并向用户显示新记录的数量每次拉后。我正在使用带有MS SQL数据库的Coldfusion 8服务器,我需要尽快实现这样的功能。

我相信该解决方案将涉及jquery javascript库(http://jquery.com),coldfusion组件,cfajaxproxy以与cfcs一起使用,以及JavaScript setInterval()函数。我准时很紧;任何人都可以为最简单版本的实现说明一些示例代码吗?希望我能理解并适应我的需要。

提前谢谢!!

1 个答案:

答案 0 :(得分:3)

您可以使用setInterval或setTimeout,具体取决于您的操作方式。您可能还希望使用clearInteval或clearTimeout来防止在某些情况下刷新。

对于AJAX的东西,你可以使用jQuery的函数,下面的例子使用getJSON,它比HTML(jQuery.get woudl做的)更轻量级,但这意味着处理它以在客户端上创建HTML。

例如:

$j = jQuery.noConflict();

$j(document).ready( initSearching );


function initSearching()
{
    Searching = setInterval( 'updateSearch()' , 5000 ); // 5s while testing...

    $j('#StopRefreshBtn').click( stopSearching );
}

function stopSearching()
{
    clearInterval(Searching);
}


function updateSearch()
{
    if ( $j('#SearchBox').val().length > 0 )
    {
        sendSearchRequest( $j('#SearchBox').val() );
    }
}


function sendSearchRequest( SearchTerms )
{
    $j.getJSON( 'http://www.myserver.com/webservices/mycfc.cfc?method=readData&SearchTerms='+SearchTerms , handleSearchResponse );
}

function handleSearchResponse( SearchResults )
{
    console.log( SearchResults );
    // TODO: Handle JSON response to render the HTML results.
}


然后,在CF方面,您只需要一个具有远程功能的组件 - 由于我使用JSON,因此将返回格式设置为:

<cfcomponent output="false">

    <cffunction name="readData" returntype="array" output="false" access="remote" returnformat="json">
        <cfargument name="SearchTerms" type="String" />
        <cfset var Results = ArrayNew(1)/>

        <!--- TODO: search and populate array of results. --->

        <cfreturn Results />
    </cffunction>

</cfcomponent>


以上所有内容都很快被抛在一起而未经过测试 - 希望如果有人发现问题,他们会指出它们。

有关使用jQuery和ColdFusion执行远程请求的更多详细信息,对此类似问题有一些答案: Invoke ColdFusion function using AJAX

希望一切都有道理,让你朝着正确的方向前进?