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

AJAX接收PHP返回车型数据拼接为单串,拆分填入下拉选择框问题

核心修改思路

采用JSON结构化传输车型列表,避免字符串拆分的兼容性问题,修改方案如下:


修改PHP接口代码

<?php
function list_of_brandcars() {
    $model_option = $_POST['pass_data'];  

    $carposts = array(             
        'post_type' => 'list_of_cars',
        'post_status' => 'publish',              
        's' => $model_option
    );                  

    $att = new WP_Query($carposts);
    // 初始化车型存储数组
    $models = [];
    if($att->have_posts()){
        while($att->have_posts()) : $att->the_post();                                
            while(have_rows('mods')) : the_row();                                                             
                // 收集车型到数组而非直接输出拼接
                $models[] = get_sub_field('model');                   
            endwhile;                  
        endwhile;
        // 重置WordPress查询数据,避免后续查询异常
        wp_reset_postdata();
    }
    // 声明返回格式为JSON
    header('Content-Type: application/json');
    // 输出结构化的车型数组
    echo json_encode($models);
    die(); 
}
add_action('wp_ajax_nopriv_list_of_brandcars', 'list_of_brandcars');
add_action('wp_ajax_list_of_brandcars', 'list_of_brandcars');
?>

修改jQuery请求代码

<script>
$(document).ready(function($) { 
    
    $('#input_11_11').change(function(){
        var from_brand = $(this).val();
        
        $.ajax({
            type: 'POST',
            url: ajaxurl,
            // 声明预期返回JSON格式
            dataType: 'json',
            data: {     
                action: 'list_of_brandcars',                        
                pass_data: from_brand
            },
            success: function(data) {           
                $('#input_11_183').empty();
                // 遍历车型数组生成选项
                for (var i = 0; i < data.length; i++) {             
                    $('#input_11_183').append('<option value="' + data[i] + '">' + data[i] + '</option>');
                }
            }
        });
        // 移除原代码中错误的die()调用,前端JS无该语法
    });
});
</script>

可选兼容方案(不推荐)

如果需要保持字符串输出的形式,可在PHP输出时用特殊分隔符拼接:

echo implode('|', $models);

前端拆分字符串后遍历即可:

success: function(data) {
    $('#input_11_183').empty();
    var modelList = data.split('|');
    for (var i = 0; i < modelList.length; i++) {
        $('#input_11_183').append('<option value="' + modelList[i] + '">' + modelList[i] + '</option>');
    }
}

该方案存在车型名包含分隔符时出错的风险,优先选择JSON传输方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 16:15:03