CFML Jquery Ajax - 当cffunction实际返回18时返回零

时间:2012-02-27 04:15:20

标签: jquery coldfusion

这必须是一个Jquery问题。以下代码返回零。当我测试/调试时,我可以毫无疑问地说cffunction正在生成数字18。 成功警报显示“Dupe Group-2 count = 0”。 Firebug的回应显示; { “列”:[ “DUPECOUNTER”], “DATA”:[[ “0”]]}

  if ($(e.target).is(":checked")) {
    $firstTD = $(this).parent().siblings().first();
    SaveDupeGroup = $firstTD.text();
        $.ajax({
            type: 'GET',
            url: 'cfc/basic.cfc?method=CheckDupeGroup&returnformat=json',
        dataType: 'json',
        data: 'dupegrouptocheck=' + $firstTD.text(),
            error: function (xhr, textStatus, errorThrown) {
            // show error 
            alert(errorThrown); 
            },
            success: function (response, textStatus, jqXHR) {
            alert('Dupe Group-' + SaveDupeGroup + ' count=' + response.DATA[0]);
            ReInitAnswer = confirm('All of the names in this group have been checked.\nDo you want to remove them from the list?');
        if (ReInitAnswer) {
              alert('continued'); 
                } else {
              alert('canceled');
              return false;
                }
        }
            });
        }

<cffunction name="CheckDupeGroup" output="false" access="remote">
<cfargument name="DupeGroupNumber" required="True" type="string" default="" />
<cfset var qResults = "" />
<cfquery name="qResults" datasource="#request.dsn#">
SELECT COUNT(id) AS DupeCounter 
FROM Temp_Duplicate_Individuals_AddressZipState 
Where dupe_group_number = #val(arguments.DupeGroupNumber)# and isnull(not_dupe_flag,'False') = 'False' 
</cfquery>
<cfreturn (qResults) />
</cffunction>

3 个答案:

答案 0 :(得分:3)

您正在传递data: 'dupegrouptocheck=' + $firstTD.text(),但函数中的参数名称为DupeGroupNumber。将dupegrouptocheck更改为DupeGroupNumber

这不是抛出必需参数错误的原因是因为你有一个参数的默认值(空字符串),CF将使用默认值而不是抛出错误而不传入参数。< / p>

所以,你基本上在运行:

SELECT COUNT(id) AS DupeCounter 
FROM Temp_Duplicate_Individuals_AddressZipState 
Where dupe_group_number = "" and isnull(not_dupe_flag,'False') = 'False' 

由于您没有等于dupe_group_number的{​​{1}},因此查询正确地返回了0的计数。

答案 1 :(得分:0)

您发送的参数可能不正确。检查来电

答案 2 :(得分:-1)

这是异步的,这就是原因。在从服务器重新调整数据之前,您的代码正在返回。在“if(ReInitAnswer)”时,ReInitAnswer甚至都没有。通常,在包含ajax调用的函数中,您不会返回某些内容,而是会更改页面上的内容或更改状态。

顺便说一句,你应该改变你的js变量

编辑:哦对不起,返回声明在成功通话中(缩进有点令人困惑:p)。在这种情况下它仍然是相同的,你的父函数在ajax调用成功函数返回之前已经完成。因此返回的值总是错误的。