使用 AJAX 调用带有多个参数的 CFC
Calling a CFC with multiple arguments using AJAX
我正在使用 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 抛出错误:
The parameter customer_name to function getDetails is required but was
not passed in.
如何成功传递这两个参数和 return 我的查询结果?
您在 Ajax 函数的数据属性中没有为 customer_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 函数出现了一些问题。您正在 returning 一个不存在且与您的函数名称相同的变量。如果你这样做,它会起作用
<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 响应时成为 return,则在 ajax 成功时解析 JSON 并进一步处理它
我正在使用 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 抛出错误:
The parameter customer_name to function getDetails is required but was not passed in.
如何成功传递这两个参数和 return 我的查询结果?
您在 Ajax 函数的数据属性中没有为 customer_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 函数出现了一些问题。您正在 returning 一个不存在且与您的函数名称相同的变量。如果你这样做,它会起作用
<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 响应时成为 return,则在 ajax 成功时解析 JSON 并进一步处理它