我想做类似于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
希望所有这些都有意义,并让您朝正确的方向前进?