从AJAX调用到CFC填充选择列表

时间:2014-09-11 19:27:08

标签: jquery ajax coldfusion cfc

我正在尝试将选择列表从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>

1 个答案:

答案 0 :(得分:1)

(来自评论)

您的变量名称不匹配。在&#34; success&#34;中,您将行值提取到名为description的变量中,然后使用&#34; vehicle_name&#34;填充列表值和文本。它应该是description

提示:cfoutput周围不需要cfquery个标签。将自动评估查询标记内的变量。另外,请不要忘记var/local范围内的查询变量,即data内的cffunction