AJAX从cfc返回变量

khg*_*ove 0 javascript ajax coldfusion jquery

我试图通过cfc文件使用AJAX在我的数据库上执行SQL COUNT,但是,我不知道如何获取返回变量.cfc文件如下

<cffunction name="getSpeakerCount" access="remote" returntype="query">
    <cfargument name="AID" required="true" type="string">
        <cfquery name="getSpeaker" datasource="SpeakerCard">
            SELECT COUNT(AID)
            FROM tbl_SpeakerCard_Log
            WHERE AID = '#AID#'
        </cfquery>
    <cfreturn getSpeakerCount>
</cffunction>
Run Code Online (Sandbox Code Playgroud)

我的ajax就是这样......我不确定如何正确地调用/使用它.

for (var i = 0; i < X; i++)
{
    $.ajax('actions/AgendaList.cfc?wsdl', {method : 'getSpeakerCount', AID: AgID, dataType: 
"text", type: 'get', success: function(data)
            {
                SCount[i] = data;
            }
            }});
Run Code Online (Sandbox Code Playgroud)

这总是将SCount [i]中的所有元素都返回为undefined.我不确定如何从cfc获得计数返回...任何帮助表示赞赏!

Dan*_*cuk 6

无论你怎么称呼它,你的功能都会失败.你说你想要返回一个数字但是,正如评论中指出的那样,你将返回一个未定义的变量.这将解决这个问题:

  • 在cffunction标记中,将返回类型从查询更改为数字.
  • 在查询的select子句中,使用sql别名为自己提供列名.
  • 由于您的查询只有一个字段和一行,因此返回该值.

所以这:

<cffunction name="getSpeakerCount" access="remote" returntype="query">
Run Code Online (Sandbox Code Playgroud)

成为这个:

<cffunction name="getSpeakerCount" access="remote" returntype="numeric">
Run Code Online (Sandbox Code Playgroud)

还有这个:

SELECT COUNT(AID)
Run Code Online (Sandbox Code Playgroud)

成为这个:

SELECT COUNT(AID) records
Run Code Online (Sandbox Code Playgroud)

还有这个:

<cfreturn getSpeakerCount>
Run Code Online (Sandbox Code Playgroud)

成为这个:

<cfreturn getSpeaker.records>
Run Code Online (Sandbox Code Playgroud)

关于使用查询参数的注释也是有效的.此外,您应该调整该变量的范围.

所以这:

WHERE AID = '#AID#
Run Code Online (Sandbox Code Playgroud)

应该这样:

WHERE AID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.aid#">
Run Code Online (Sandbox Code Playgroud)

在使用ajax进行尝试之前,请确保您可以使用ColdFusion代码运行此代码.