我正在尝试将选择列表从AJAX调用填充到CFC。在我的CFC中,运行一个查询来获取"车辆列表"来自我的数据库,标记为活动。从选择列表中进行选择后,将根据该选择填充一组表单输入。
我知道从我的选择列表返回的数据应该是3辆车的清单。
当我加载页面时,我的选择列表将以下文本显示为列表中的三个项目:
[object HTMLSelectElement]
[object HTMLSelectElement]
[object HTMLSelectElement]
在Chrome浏览器控制台中,我可以看到AJAX调用对我的CFC的响应:
{ "COLUMNS":["VEHICLE_NAME"]
,"DATA": [ ["Service Truck 10"]
,["Ford Transit Connect"]
, ["Ford TransitConnect New"]
]
}
奇怪的是,这显示了对我的查询返回的三行中每一行的响应。会导致什么?
这是我的AJAX调用:
<!--- Retrieve list of vehicles and populate the mileage in the form--->
<script>
$(document).ready(function () {
//populate the vehicle selectlists
$.ajax({
url: 'cfcs/mileagedata.cfc?method=getData&returnformat=json',
dataType: 'json',
success: function(response){
$.each(response.DATA, function(i, row){
// get value in first column ie "description"
var description = row[0];
// append new option to list
$("#vehicle_name").append($('<option/>', {
value: vehicle_name,
text : vehicle_name
}));
});
},
error: function(msg){
console.log(msg);
}
})
//Populate the start and end odometer text boxes
$.ajax({
url:'cfcs/mileagedata.cfc?method=getDetail&returnformat=json',
data: $('#addmileage').serialize(),
success: function(response) {
$("#start_odometer").val( "worked" );
$("#end_odometer").val( "worked" );
}
});
});
</script>
这是我的CFC:
<!---Service Vehicle Slect Box --->
<cffunction name="getData" access="remote" returntype="query">
<!--- Function to get data from datasource --->
<!---Get Service Vehicles --->
<cfquery name="data" datasource="#datasource#">
select vehicle_name
from vehicles
where active = '1'
</cfquery>
<!--- Return results --->
<cfreturn data>
</cffunction>
<cffunction name="getDetail" access="remote" returnType="string">
<cfargument name="vehicle_name" type="any" required="true">
<!--- localize function variables --->
<cfset var dataDetail = "">
<cfoutput>
<cfquery name="dataDetail" datasource="#datasource#">
SELECT mileage
FROM vehicles
<!--- adjust cfsqltype if needed --->
WHERE vehicle_name = <cfqueryparam value="#ARGUMENTS.vehicle_name#" cfsqltype="cf_sql_varchar">
</cfquery>
</cfoutput>
<cfreturn dataDetail.mileage>
</cffunction>
答案 0 :(得分:1)
(来自评论)
您的变量名称不匹配。在&#34; success&#34;中,您将行值提取到名为description
的变量中,然后使用&#34; vehicle_name&#34;填充列表值和文本。它应该是description
提示:cfoutput
周围不需要cfquery
个标签。将自动评估查询标记内的变量。另外,请不要忘记var/local
范围内的查询变量,即data
内的cffunction
。