这必须是一个Jquery问题。下面的代码返回零。当我测试/调试时,我可以毫无疑问地说函数正在生成数字18。成功警告显示"Dupe Group-2 count=0“。Firebug响应显示;{"COLUMNS":"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>发布于 2012-02-27 12:27:53
您正在传递data: 'dupegrouptocheck=' + $firstTD.text(),但是函数中的参数名称是DupeGroupNumber。将dupegrouptocheck更改为DupeGroupNumber。
之所以没有抛出一个必需的参数错误,是因为您有一个参数的默认值(一个空字符串),而CF将使用默认值,而不是因为没有传入参数而抛出错误。
因此,您实际上是在运行:
SELECT COUNT(id) AS DupeCounter
FROM Temp_Duplicate_Individuals_AddressZipState
Where dupe_group_number = "" and isnull(not_dupe_flag,'False') = 'False' 因为您没有一个等于""的dupe_group_number,所以查询正确地返回了计数0。
发布于 2012-02-27 12:24:32
也许您发送的参数不正确。检查get调用
发布于 2012-02-27 12:24:58
它是异步的,这就是为什么。您的代码在从服务器返回数据之前执行返回。在"if( ReInitAnswer )“这一点上,ReInitAnswer甚至都不存在。通常,在包含ajax调用的函数中,您不会返回某些内容,而是更改页面上的某些内容或更改状态。
顺便说一下,您应该对js变量进行var
编辑:哦,对不起,返回语句在成功调用中(缩进有点混乱:p)。在本例中,它仍然是一样的,在ajax调用成功函数返回之前,父函数已经完成。因此,返回值总是错误的。
https://stackoverflow.com/questions/9460000
复制相似问题