You need to enable JavaScript to run this app. 如何将PHP数组传递到JavaScript并将值逐个添加到下拉菜单选项
优惠活动
大模型
产品
解决方案
定价
更多

如何将PHP数组传递到JavaScript并将值逐个添加到下拉菜单选项

问题原因

你的AJAX请求拿到的返回值response是JSON格式的字符串,而非JavaScript数组。直接遍历字符串时会按单个字符迭代,所以才会出现下拉选项拆分显示单个符号、数字的问题。

修复方案

有两种常用修复方式:

方案1:在AJAX配置中指定返回数据类型为JSON

给$.ajax增加dataType: 'json'配置项,jQuery会自动将返回的JSON字符串解析为JavaScript数组,修改后代码如下:

function get_code(){
    $.ajax({
            url : 'index_backend.php',
            type : 'POST',
            data : {"input":"code"},
            // 新增这行指定返回数据类型
            dataType: 'json',
            success : function(response) {
                var select = document.getElementById("colony_code");
                for(var i=0; i<response.length; i++){
                    var opt = response[i];
                    var el = document.createElement("option");
                    el.textContent = opt;
                    el.value = opt;
                    select.appendChild(el);
                }
            },
            complete: function(){
            }
    });
}

方案2:手动解析返回的JSON字符串

如果不方便修改AJAX配置,也可以在success回调里手动用JSON.parse()转换返回值:

success : function(response) {
    // 手动把JSON字符串转成JS数组
    var codeList = JSON.parse(response);
    var select = document.getElementById("colony_code");
    for(var i=0; i<codeList.length; i++){
        var opt = codeList[i];
        var el = document.createElement("option");
        el.textContent = opt;
        el.value = opt;
        select.appendChild(el);
    }
}

额外注意

如果后端返回的内容有非JSON格式的异常输出,可能会导致解析失败,建议同时给后端接口加上Content-Type: application/json的响应头,保证数据格式统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 02:45:04