使用AJAX调用具有多个参数的CFC

使用AJAX调用具有多个参数的CFC,ajax,coldfusion,cfc,Ajax,Coldfusion,Cfc,我使用AJAX调用CFC,并尝试从我运行的查询中发送两个以上的变量。我的ajax如下所示: $.ajax({ type:"POST", url:"cfcs/get_equipment_details.cfc?method=getDetails", dataType: 'json', data: { equipment_name: "#equipment_name#", customer_name: "#customer_name#"}, c

我使用AJAX调用CFC,并尝试从我运行的查询中发送两个以上的变量。我的ajax如下所示:

    $.ajax({
     type:"POST",
     url:"cfcs/get_equipment_details.cfc?method=getDetails",
     dataType: 'json',
     data: { equipment_name: "#equipment_name#", customer_name: "#customer_name#"},
    cache:false,
    success: function(response) {
        console.log("Customer Name" + customer_name);

        $.each(response.DATA, function(i, row){
            var id = row[0];
            var customer_name = row[1];
            var equipment_name = row[2];
            var date_last_completed = row[3];
            var maintenance_interval = row[4];
            var last_completed_by = row[5];
            var equipment_notes = row[6];
            var warranty_end_date = row[7];
            var service_Tag = row[8];
            var serial_number = row[9];
            var backup_notes = row[10];
            var TT = row[11];
            $("##customer_name#id#").val(customer_name);
            });
     }
});
这是我的CFC:

<cffunction name="getDetails" access="remote" output="false" returntype="query">
    <cfargument name="equipment_name" type="any" required="true">
    <cfargument name="customer_name" type="any" required="true">

    <!--- Get list of all equipment --->    
    <cfquery name="get_equipment" datasource="#datasource#">
    select *
    from equipment_maintenance
    where equipment_name= <cfqueryparam value="#ARGUMENTS.equipment_name#" cfsqltype="cf_sql_varchar">
    AND customer_name= <cfqueryparam value="#ARGUMENTS.customer_name#" cfsqltype="cf_sql_varchar">
    </cfquery>

    <cfreturn get_equipment>

挑选*
来自设备维护
其中设备名称=
和客户名称=
但我的CFC抛出了一个错误:

函数getDetails的参数customer_name是必需的,但未指定 没有通过


我如何才能成功地传入这两个参数并返回查询结果?

您在Ajax函数的数据属性中缺少对
customer\u name
的关闭。 您的Ajax函数应该如下所示

$.ajax({
 type:"POST",
 url:"cfcs/get_equipment_details.cfc?method=getDetails",
 data: { equipment_name: "#equipment_name#", customer_name: "#customer_name#"},
        cache:false,
        success: function(msg) {
         $("##customer_name#id#").val(msg); 
    }
 });
现在您的cfc函数出现了一些问题。您返回的变量不存在,并且与函数名相同。如果您这样做,它将工作

<cffunction name="getDetails" access="remote" output="false" returnformat="JSON">
    <cfargument name="equipment_name" type="any" required="true">
    <cfargument name="customer_name" type="any" required="true">

    <!--- Get list of all equipment --->    
    <cfquery name="get_equipment" datasource="#datasource#">
    select *
    from equipment_maintenance
    where equipment_name= <cfqueryparam value="#ARGUMENTS.equipment_name#" cfsqltype="cf_sql_varchar">
    AND customer_name= <cfqueryparam value="#ARGUMENTS.customer_name#" cfsqltype="cf_sql_varchar">
    </cfquery>

    <cfreturn get_equipment.customer_Name>
</cffunction>

挑选*
来自设备维护
其中设备名称=
和客户名称=

如果您希望在ajax响应时返回整个查询对象,那么在ajax成功时解析JSON并进一步处理它

网络选项卡显示通过了什么?我不确定这是否是输入错误,但您缺少了
客户名称
的结束引号。cfc中的
cfreturn
标记看起来很麻烦。是的@Chester you如果你是对的,我丢失了一个引号。这对我收到的一个语法错误很有帮助。@Chester-我本来想说请把它作为一个答案发布,但是…有人抢先一步;-)好的,我现在明白了标记的意义。但是成功函数中的变量“msg”中包含了什么信息?这就是在另外,我的CFC现在抛出了这个错误:不能将字符串[All-About Care]强制转换为[JSON]类型的值-All About Care是查询返回的“customer_name”字段的值。如果您返回整个查询对象,CF将把您的查询转换为JSON,然后将其发送回,因此您的成功消息将包含您需要解析的JSON字符串,或者您可以设置数据类型:“JSON“在这种情况下,将自动解析ajax函数。如果您只返回一个customer\u name表单查询对象,那么您的msg in success包含customer\u name,您不需要解析它。好的,所以我用您的建议更新了我的原始帖子。我现在在控制台中没有收到任何错误,但我在HTML输入字段中看到了[object]。这是因为我还需要解析数据吗?我想我需要设置它,以便有JSON进行解析,因为我想返回包含多列数据的整个查询。如果您在HTML输入或控制台中看到[object object],则表示JSON已解析。现在,您只需要根据页面上的需要进一步处理它(可能需要循环浏览),谢谢。我用新代码更新了我的帖子。现在好像在工作。