通过Json传递javascript数组给coldfusion CFC
Passing javascript array to coldfusion CFC via Json
我使用这个javascript来捕获flexigrid中选中的所有复选框,并尝试将这个行id数组发送到CFC
function removeCertidao(){
var allVals = [];
$("input[id='certidao']:checked").each(function() {
allVals.push($(this).val());
});
if (allVals.length == 0) {
alert('É necessário escolher ao menos uma certidão.');
return false;
} else {
alert(allVals);
}
$.ajax({
type: "post",
url: "../../CFC/CRC.cfc",
data: {
method: "removeCertidaoCRC",
numSeqCertidao: allVals,
},
dataType: "json",
success: function(){
alert('YES');
},
error: function(){
alert('NO');
}
});
}
下面的氯氟化碳
<cffunction access="remote" name="removeCertidaoCRC" returntype="boolean">
<cfargument name="numSeqCertidao" type="array" required="true">
<cftry>
<cftransaction>
<cfquery datasource="portalCompras">
UPDATE CRC_CERTIDAO CC
SET CC.ncdcrcstatus = 0
WHERE CC.NCDCRCCERTIDAO in <cfqueryparam value="#numSeqCertidao#"
cfsqltype="cf_sql_integer"
list="yes">
</cfquery>
</cftransaction>
<cftransaction action="commit" />
<cfreturn 0>
<cfcatch type="any">
<cftransaction action="rollback" />
<cfreturn #cfcatch.message#>
</cfcatch>
</cftry>
</cffunction>
当我尝试运行这个函数时,我的服务器回答NUMSEQCERTIDAO参数传递给removeCertidaoCRC函数不是数组类型。
我最近刚加入了一个延迟的项目,我已经没有选择了。
jQuery将做一个很好的工作发送数组分离像numSeqCertidao[] = 'val1', numSeqCertidao[] = 'val2' ...
,但ColdFusion处理这很糟糕,并没有采取这并重建它作为一个数组。
你的JavaScript不是发送JSON格式的数据,dataType选项是响应数据的格式。为了你的需要,我建议你把numSeqCertidao
作为一个列表发送,给你的CFC方法的参数一个字符串类型,剩下的部分保持原样,应该工作得很好。
稍微修改代码:
function removeCertidao(){
var allVals = [];
$("input[id='certidao']:checked").each(function() {
allVals.push($(this).val());
});
if (allVals.length == 0) {
alert('É necessário escolher ao menos uma certidão.');
return false;
} else {
alert(allVals);
}
$.ajax({
type: "post",
url: "../../CFC/CRC.cfc",
data: {
method: "removeCertidaoCRC",
numSeqCertidao: allVals.join(),
},
dataType: "json",
success: function(){
alert('YES');
},
error: function(){
alert('NO');
}
});
}
<cffunction access="remote" name="removeCertidaoCRC" returntype="boolean">
<cfargument name="numSeqCertidao" type="string" required="true">
<cftry>
<cftransaction>
<cfquery datasource="portalCompras">
UPDATE CRC_CERTIDAO CC
SET CC.ncdcrcstatus = 0
WHERE CC.NCDCRCCERTIDAO in <cfqueryparam value="#numSeqCertidao#"
cfsqltype="cf_sql_integer"
list="yes">
</cfquery>
</cftransaction>
<cftransaction action="commit" />
<cfreturn 0>
<cfcatch type="any">
<cftransaction action="rollback" />
<cfreturn #cfcatch.message#>
</cfcatch>
</cftry>
</cffunction>
你传递给CFC的是一个Javascript数组。它不是ColdFusion数组。所以对CFC来说,它看起来像一个字符串。将类型更改为"string"或"any",或者完全省略它
相关文章:
- 在ColdFusion应用程序中使用JSON
- 当在coldfusion中通过AJAX传递时,FORM提交在IE浏览器中给出空表单
- ColdFusion XML to Javascript variable
- ColdFusion.Window.create不刷新弹出窗口
- Javascript-Coldfusion-选择后自动填充
- PHP 相当于 Coldfusion 的 cfpdfform
- Coldfusion将表单异步发布到cfc
- Coldfusion中的表单验证
- 使用ajax在coldfusion中引用表单值
- ColdFusion中的AJAX请求
- 如何处理'00'JSON中的结果是JS或Coldfusion
- 如何将文件类型从Coldfusion代码转换为javascript代码
- jQuery not posting - (jQuery - ColdFusion)
- 当用户检索表单时返回选中的复选框(Coldfusion)
- 如何使用从 ajax coldfusion cfc 调用返回的 JSON
- 通过Json传递javascript数组给coldfusion CFC
- 如何在ColdFusion .cfc函数中用ajax调用上传文件
- 如何在ColdFusion CFC的远程方法中使用/访问SESSION变量?
- 如何从coldfusion cfc页面获得返回变量
- ColdFusion CFC CORS and AJAX posts