You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Ajax下拉选择框问题:酒店ID与名称异常显示

解决下拉框同时显示酒店名称与ID的问题

我来帮你快速搞定这个问题!核心问题出在控制器构建数组的方式上——现在的代码把ID和名称当成了数组的独立元素,而Form::select需要的是键为ID、值为酒店名称的关联数组,这样才能让下拉框只显示名称,同时把ID作为选项的value值用于后续请求。

步骤1:修正控制器代码

把原来的数组构建逻辑改成关联数组形式:

$hotel_nam = [];
foreach ($hotel as $nam ){ 
    // 将酒店ID作为数组的键,酒店名称作为对应的值
    $hotel_nam[$nam->id] = $nam->hotel_name; 
} 
return $hotel_nam;

处理后$hotel_nam会变成这样的结构:

[
    1 => "XX商务酒店",
    2 => "XX度假酒店",
    // ...更多酒店数据
]

步骤2:确认下拉框代码

你的下拉框代码本身没有问题,修正数组后,Form::select会自动把关联数组的键设置为选项的value,值设置为下拉框显示的文本:

{!! Form::select('hotel_name',$hotel_nam,'S', array('style'=>' Border:none; ', 'id' => 'hotel_id', 'onchange'=>"showRooms(this.value)"));!!}

现在用户选择酒店时,this.value会直接拿到对应的酒店ID,刚好可以传给showRooms函数做Ajax请求,完全匹配你的需求。

为什么原来的代码会出错?

原来的代码把ID和名称依次推入索引数组,最终数组结构是[1, "XX酒店", 2, "YY酒店"],Form::select会把数组的索引(0、1、2、3...)作为选项的value,把数组元素(ID、名称、ID、名称...)作为显示文本,这就导致下拉框里ID和名称交替显示,完全不符合预期啦~

内容的提问来源于stack exchange,提问作者Jalloh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:27:34