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

WordPress项目Ajax筛选无数据返回问题求助

问题分析

你的Ajax请求始终返回空$_POST数组,核心原因是表单数据序列化的时机错误:在页面初始化时就执行了filter.serialize(),此时用户还未选择任何筛选条件,得到的是空数据,后续提交时一直复用这个初始的空数据,而非用户选择后的最新表单值。

修复步骤

1. 修正jQuery代码中的数据序列化时机

将表单数据序列化操作移到提交函数内部,确保每次提交时都获取最新的用户输入:

(function ($) {
    $(document).ready(function () {
        let filter = $("#lot-filter");

        function submitFormFilter(e) {
            e.preventDefault();
            // 每次提交时重新序列化表单,获取最新数据
            let data = filter.serialize();
            console.log(data);
            $.ajax({
                url: filter.data('ajaxUrl'),
                type: filter.attr('method'),
                data: data,
                success: function (result) {
                    console.log(result);
                    $('.response').html(result);
                },
                error: function (result) {
                    console.warn(result);
                }
            })
        }

        //Lot Search
        $('#lot-filter').submit(submitFormFilter);
    });
})(jQuery);

2. 优化后端调试输出

后端改用print_r()输出数组结构,更便于查看接收的数据:

function lot_filter_action()
{
    print_r($_POST);
    die();
}

3. 额外验证检查点

  • 确认自定义分类法neighborhood已正确注册,get_terms能正常返回分类项
  • 表单隐藏字段action的lot_filter值,与后端钩子wp_ajax_lot_filter、wp_ajax_nopriv_lot_filter的后缀完全一致
  • 打开浏览器控制台的Network面板,查看Ajax请求的Form Data是否包含neighborhoodfilter和action参数,确认数据发送是否正常
后续功能扩展(可选)

当数据能正常接收后,可在lot_filter_action中添加WP_Query实现自定义文章类型筛选:

function lot_filter_action()
{
    $args = array(
        'post_type' => '你的自定义文章类型slug',
        'posts_per_page' => -1,
    );

    if (!empty($_POST['neighborhoodfilter'])) {
        $args['tax_query'] = array(
            array(
                'taxonomy' => 'neighborhood',
                'field' => 'term_id',
                'terms' => $_POST['neighborhoodfilter'],
            ),
        );
    }

    $query = new WP_Query($args);

    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            // 输出自定义帖子内容模板
            echo '<h3>' . get_the_title() . '</h3>';
        }
        wp_reset_postdata();
    } else {
        echo '没有找到匹配的内容';
    }

    die();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:13:16