我想做类似于Twitter搜索使用AJAX创建“实时结果”的方式。似乎数据库每15秒左右轮询一次,并且每次拉动后都会向用户显示新记录的数量。我正在使用MS SQL数据库在Coldfusion 8服务器上工作,因此我需要尽快实现这种功能。

我相信该解决方案将涉及jquery javascript库(http://jquery.com),coldfusion组件,与cfcs一起使用的cfajaxproxy和JavaScript setInterval()函数。我时间紧。谁能说明一些示例代码来实现此最简单的版本?希望我能够理解并适应我的需求。

先感谢您!!

最佳答案

您可以根据需要的方式使用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进行操作,因此returnformat设置为:

<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

希望所有这些都有意义,并让您朝正确的方向前进?

09-20 12:00