当前位置: 首页 > 面试题库 >

通过Json将JavaScript数组传递给Coldfusion CFC

赵雅懿
2023-03-14
问题内容

我使用此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');
        }
    });             
 }

低于CFC

<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>

当我尝试运行此函数时,我的服务器回答说,传递给removeCertidaoCRC函数的NUMSEQCERTIDAO参数不是数组类型。

我最近刚进入的一个延迟项目中的所有选项都用光了。


问题答案:

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>


 类似资料:
  • 问题内容: 我想在PHP中操纵JavaScript数组。可以做这样的事情吗? 活动是一维数组,例如: 尝试此脚本时无法完成…如何解决? 问题答案: 而已!现在您可以在PHP中访问它:

  • 问题内容: 我知道该主题有很多答案,但是找不到解决我问题的方法。我有一个如下所示的ASP.NET MVC Web API: 我尝试这样称呼它: 然后,URL如下所示: 选择: 网址: 两种方法都不起作用。 我是否真的必须以字符串形式发送和接收它或使用POST? 问题答案: 不,不要尝试在GET请求中发送JSON。将JSON与其他具有主体的动词一起使用,例如POST和PUT。 通过使用属性装饰您的a

  • 问题内容: 我正在使用Django和Apache来提供网页。我的JavaScript代码当前包含一个数据对象,该数据对象的值将基于用户从选项菜单中的选择而显示在各种HTML小部件中。我想从Python字典中导出这些数据。我想我知道如何将JavaScript代码嵌入HTML中,但是如何(即时)将数据对象嵌入该脚本中,以便脚本的功能可以使用它? 换句话说,我想从Python字典中创建一个JavaScr

  • 问题内容: 我正在尝试将字符串数组作为POST数据传递给PHP脚本,但是不确定该怎么做。 这是到目前为止我执行PHP脚本的代码: 我试图传递数组的地方: 调用PHP脚本: 以及相关的PHP脚本: 有任何想法吗?谢谢 ! 编辑 我正在尝试以下方法,但仍不满意: 这就是我所有的“错误报告” … 问题答案: 要将查询字符串中的数组传递给php,您应该添加到标识符并将每个项目都添加为单独的条目,因此这样的

  • 问题内容: 我在烧瓶中有一个称为数组的函数,该函数接收一个列表并打印出列表中的项目: 在客户端,我想将名为str的javascript数组传递给该数组。我该怎么办?这就是我现在所拥有的,但是Flask没有读取添加的变量。有任何想法吗? 问题答案: Flask具有一个称为request的内置对象。在请求中有一个称为args的multidict。 您可以用来检索查询字符串的值。 当然,这需要一个get

  • 是否可以使用UI将项目数组传递到swagger块中的单个参数中?我在ruby\rails应用程序中使用它。请求类型是GET。 我有一个接受许多参数的搜索 API。所有这些都是单一值,但一个设施除外。它接受一个项目数组,并且可以使用类似于下面显示的 URL 进行调用(下面的示例显示了传递的两个值 1 和 2)。 我的参数是这样设置的: 当我在swagger中传递数组作为参数时,EG[1]会生成以下U