这必须是一个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>
答案 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调用成功函数返回之前已经完成。因此返回的值总是错误的。