在开始之前,我承认我对 jquery 很陌生,事实上,截至 3 个月前,我还没有 javascript 背景。
我想要完成的是获取我在 jquery 中可用的信息数组,并将该数组传递给可以处理信息的 .cfc 文件。
这是我的jQuery:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.json.min.js"></script>
<script type="text/javascript">
$(function() {
var mydata = {data:[1,2,3,4,5]};
$.post('test.cfc', {method:"handleArray", returnFormat:"plain", argumentCollection: $.toJSON(mydata)}, function(res) {
alert($.trim(res));
});
});
</script>
这是大约 5 年前从 Stephen Duncan Jr 的帖子中发现的一段代码。
这是冷聚变:
<cfcomponent>
<cffunction name="handleArray" access="remote" returnType="numeric">
<cfargument name="data" type="array" required="true">
<cfquery name = "qTest" datasource="#REQUEST.dsn#" username="#REQUEST.dsu#" password="#REQUEST.dsp#">
INSERT INTO test
(value1, value2, value3, value4, value5)
VALUES (
<cfqueryparam cfsqltype="cf_sql_integer" value="#handleArray[1]#">,
<cfqueryparam cfsqltype="cf_sql_integer" value="#handleArray[2]#">,
<cfqueryparam cfsqltype="cf_sql_integer" value="#handleArray[3]#">,
<cfqueryparam cfsqltype="cf_sql_integer" value="#handleArray[4]#">,
<cfqueryparam cfsqltype="cf_sql_integer" value="#handleArray[5]#">)
</cfquery>
<cfreturn arrayLen(arguments.data)>
</cffunction>
</cfcomponent>
这段代码当然只是一个让它工作的测试。但是我需要将大约 40 个变量传递给 cfc。
任何可以提供的信息将不胜感激,尤其是任何解释结果为何有效的信息。
最佳答案
@TimHowey 您的 jquery post 方法似乎有问题。我认为这是您需要做的:
<script type="text/javascript" src="jquery.json.min.js"></script>
<script type="text/javascript">
$(function() {
var mydata = "[1,2,3]";
$.post('test.cfc', {
method: "handleArray",
returnFormat: "plain",
data: mydata
}, function(res) {
alert("ok");
});
});
</script>
您正在使用 post 方法,因此所有内容都将在
form
范围内发送。在您的 cfc 中,您需要做的就是像这样反序列化参数: <cffunction name="handleArray" access="remote" returnType="numeric">
<cfargument name="data" type="any" required="true">
<cfset var getArray = DeserializeJSON(arguments.data)/>
<cfset var qTest = "">
<cfquery name = "qTest" datasource="#REQUEST.dsn#" username="#REQUEST.dsu#" password="#REQUEST.dsp#">
INSERT INTO test
(value1, value2, value3)
VALUES (
<cfqueryparam cfsqltype="cf_sql_integer" value="#getArray[1]#">,
<cfqueryparam cfsqltype="cf_sql_integer" value="#getArray[2]#">,
<cfqueryparam cfsqltype="cf_sql_integer" value="#getArray[3]#">
)
</cfquery>
<cfreturn arrayLen(getArray)>
</cffunction>
编辑
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript" src="jquery.json.min.js"></script>
<script type="text/javascript">
$(function() {
var mydata = '[1,"keshav",3]';
$.post('test.cfc', {
method: "handleArray",
returnFormat: "plain",
data: mydata
}, function(res) {
alert("ok");
});
});
</script>
关于jquery - 将带有 jquery 的数组传递给 ColdFusion 组件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33420922/