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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:15:04