AJAX动态给下拉框的option中赋值

本文介绍了一个使用Ajax实现的前后端交互案例,前端通过发送POST请求获取风险代码列表,并将其填充到下拉框中;后端通过PrpDriskFindByConditionsCommand处理请求并返回数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



  $.ajax({
      url: "/sales/saSettleAccount.do?actionType=queryRiskCode&codeType=queryRiskCodeAllSelect",  //要写绝对路径
      type: "POST",
      dataType: "json",
      async : false,
       error: function (XMLHttpRequest, textStatus, errorThrown) {
              //  displayMessage(XMLHttpRequest.status);
              //  displayMessage(XMLHttpRequest.readyState);
               // displayMessage(textStatus);
        },



         success : function(jsonOBJ)
         {
          var  jsonOBJs=[];
          for(var i=0;i<jsonOBJ.length;i++){
              var option = new Option(jsonOBJ[i].riskCode+"-"+jsonOBJ[i].riskCName,jsonOBJ[i].riskCode);
                 riskCode.options.add(option);//riskCode为select标签的name
                 
             }
   var select = document.getElementById("riskCodeId");  
  for(var i=0; i<select.options.length; i++){  //此处的for循环为将下拉框中的值全都选中
            select.options[i].selected = true; 
    }
         }
     });

后台

  PrpDriskFindByConditionsCommand command = new PrpDriskFindByConditionsCommand(conditions);
  Collection result = (Collection) command.execute();
  for (Iterator iter = result.iterator(); iter.hasNext();) {
       PrpDriskDto prpDriskDto = (PrpDriskDto) iter.next();
   codeValues.add(prpDriskDto);
  }
  response.setContentType("text/html;charset=UTF-8");


  String riskCodeCollections= JSON.toJSONString(codeValues);

  response.getWriter().write(riskCodeCollections);


在使用 FreeMarker 模板引擎时,可以通过条件判断为下拉框赋值。FreeMarker 提供了 `<#if>` 和 `<#list>` 等指令来实现逻辑控制和数据遍历,从而动态生成 HTML 内容。 ### 条件判断为下拉框赋值 #### 1. 使用 `<#if>` 进行条件判断 可以利用 `<#if>` 指令判断当前循环项是否与目标值匹配,若匹配则添加 `selected` 属性。以下是一个示例: ```ftl <select name="platform" id="platform"> <option value="1" <#if testInfo.platform?? && testInfo.platform! == 1>selected</#if>>Android</option> <option value="2" <#if testInfo.platform?? && testInfo.platform! == 2>selected</#if>>IOS</option> <option value="3" <#if testInfo.platform?? && testInfo.platform! == 3>selected</#if>>前端</option> <option value="4" <#if testInfo.platform?? && testInfo.platform! == 4>selected</#if>>Java</option> <option value="5" <#if testInfo.platform?? && testInfo.platform! == 5>selected</#if>>平台化</option> <option value="6" <#if testInfo.platform?? && testInfo.platform! == 6>selected</#if>>ERP</option> </select> ``` 此代码片段中,每个 `<option>` 标签都包含一个条件判断语句,用于检查 `testInfo.platform` 的值是否与当前选项的 `value` 匹配,并据此设置 `selected` 属性[^1]。 #### 2. 使用 `<#list>` 遍历数据集合 如果选项来源于一个数据集合,可以使用 `<#list>` 指令进行遍历,同时结合 `<#if>` 判断当前项是否需要选中。例如: ```ftl <select name="readingType.id" class="form-control" id="readingType"> <#list readType as type> <option value="${type.id}" <#if read.readingType.id == type.id>selected</#if>>${type.name}</option> </#list> </select> ``` 该示例通过 `<#list>` 遍历 `readType` 集合,生成下拉框的选项,并使用 `<#if>` 判断当前遍历项是否应被选中[^4]。 ### 数值处理注意事项 在 FreeMarker 中,数值可以直接输出,无需引号包围。小数点需用 `"."` 分隔,且不能使用分组符号 `","`。此外,数值不能省略小数点前的 `0`,如 `.5` 是无效写法;而 `8`, `+8`, `8.00` 均被视为相同数值[^2]。 ### 动态联动下拉框 对于需要实现多级联动的下拉框,通常涉及 AJAX 请求获取子级数据。虽然 FreeMarker 本身不直接支持 AJAX,但可以在页面中嵌入 JavaScript 脚本,根据用户选择触发请求并更新下拉框内容。以下是一个静态部分的示例: ```ftl <div class="layui-form-item" id="app_url" style="display: none;"> <div class="layui-inline"> <label class="layui-form-label">URL链接</label> <div class="layui-input-inline"> <select name="hm" lay-filter="url1" lay-verify="required"> <option value="">链接到栏目</option> <#list menu_rs as vo> <option value="${vo.id},${vo.controller}">${vo.title}</option> </#list> </select> </div> </div> <div class="layui-inline"> <label class="layui-form-label">落地页</label> <div class="layui-input-inline"> <select name="hm2" id="hm2"> <option value="">链接到具体网页</option> <option value="0">北京</option> <option value="1">上海</option> <option value="2">广州</option> <option value="3">深圳</option> <option value="4">杭州</option> </select> </div> </div> </div> ``` 上述代码展示了如何使用 FreeMarker 的 `<#list>` 指令动态生成 URL 链接的下拉选项[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值