AJAX加载的select下拉框添加selected属性后选项显示异常
问题修复方案
问题根源
- PHP中三元运算符优先级低于字符串拼接符
.,你没有用括号包裹三元判断逻辑,导致代码先执行前面的字符串拼接再做条件判断,输出内容完全错乱 - 你在
value属性的闭合单引号后多写了一个多余的单引号,同时$m['name']末尾多写了无效的拼接符,进一步破坏了HTML标签结构
修复后代码
public function getProperties($id){ $option = "<option value='0'>Select</option>"; $propertyList = $this->listings_model->get_array_property(''); $property = $this->listings_model->get_property($id); // 提前取出选中值避免循环内重复读取,同时加判空逻辑避免报错 $selectedId = $property[0]['property'] ?? 0; foreach($propertyList as $m){ // 用括号包裹三元表达式保证运算顺序,删除多余引号 $option .= "<option value='".$m['id']."' ".($selectedId == $m['id'] ? 'selected=selected':'').">".$m['name']."</option>"; } echo json_encode($option); }
额外优化建议
如果你的前端AJAX是直接把返回的HTML插入到select中,也可以直接输出HTML字符串而不用json_encode,减少前端解析步骤。
内容的提问来源于stack exchange,提问作者JAYZ
相关产品推荐
相关产品推荐

