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
相关产品推荐
相关产品推荐

