在开始之前,我承认我对 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/

10-12 12:46
查看更多