在coldfusion中使用ajax而不是工作的另一个下拉填充

时间:2014-01-30 13:23:09

标签: ajax coldfusion

我通过这个网站搜索了很多,发现了一些类似的帖子,但他们无能为力。我有2个下拉菜单。第一个是通过内联查询填充的。第二个需要通过第一个选择填充。我知道cfselectcfajaxproxy是最简单的2个,但我想在Railo上使用它们,它们不支持它们(检查并返回失望)。

ajax代码如下:

$.ajax({
      type: 'POST',
      url: 'admin/getModelsForManufs.cfc?method=getModels&returnFormat=JSON',
      data: {manuid:selected},
      dataType: "text",
      success: function(res) {
                  var newoptions = "";
                  for(var i=0; i<res.length; i++) {
                      newoptions += "<option value=\"" + res[i].ID + "\">" + res[i].NAME + "</option>";
                  }
                  $("#model").append(newoptions);
              },
              error: function(x) {
                  alert(x.responseText);
              }
    });

其中manuid是第一个选择,model是要填充的第二个下拉列表的html字段ID。 cfc具有以下内容:

<cffunction name="getModels" access="remote" returnType="array">
    <cfargument name="manuid" type="numeric" required="true" default="#url.manuid#">

    <cfset var data="">
    <cfset var result=[]>
    <cfset var i=0>

    <cfquery name="data" datasource="#THIS.dsn#">
        select modelId, modelName 
        from   tablename
        where  manufacturerid = <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.manuid#">
    </cfquery>

    <cfloop index="i" from="1" to="#data.RecordCount#">
        <cfset model = {}> 
        <cfset model.NAME = data.modelName[i]>
        <cfset model.ID = data.modelId[i]>
        <cfset arrayAppend(result, model)>
    </cfloop>

    <cfreturn result>
</cffunction>

在Firebug中,数据格式为:

[{"ID":84.0,"NAME":"name 1"},{"ID":1.0,"NAME":"name 2"}] 

看起来正确并且返回了更多记录。尝试了大部分技巧,但仍然为我为什么第二次下拉不填充而感到头疼。任何帮助都非常感谢。提前谢谢。

1 个答案:

答案 0 :(得分:0)

试试此代码

$.ajax({
  type: 'POST',
  url: 'admin/getModelsForManufs.cfc?method=getModels&returnFormat=JSON',
  data: {manuid:selected},
  dataType: "text",
  success: function(res) {
              var res2 = JSON.parse(res);
              var newoptions = "";
              for(var i=0; i<res2.length; i++) {
                  newoptions += "<option value=\"" + res2[i].ID + "\">" + res2[i].NAME + "</option>";
              }
              $("#model").append(newoptions);
          },
          error: function(x) {
              alert(x.responseText);
          }
});