我想做一些类似于twitter搜索使用AJAX创建“实时结果”的方式。似乎每隔15秒左右轮询一次数据库,并向用户显示新记录的数量每次拉后。我正在使用带有MS SQL数据库的Coldfusion 8服务器,我需要尽快实现这样的功能。
我相信该解决方案将涉及jquery javascript库(http://jquery.com),coldfusion组件,cfajaxproxy以与cfcs一起使用,以及JavaScript setInterval()函数。我准时很紧;任何人都可以为最简单版本的实现说明一些示例代码吗?希望我能理解并适应我的需要。
提前谢谢!!
答案 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
希望一切都有道理,让你朝着正确的方向前进?