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

WordPress Ajax导出自定义文章类型CSV为空问题求助

问题排查与解决

核心问题:JS下载逻辑错误

你在Ajax POST请求中已经拿到了正确的CSV数据(控制台能看到),但后续却创建了一个不带任何筛选参数的GET请求链接去下载。这个GET请求没有传递data(year、subject、class等筛选条件),导致PHP中的$_POST['data']为空,WP_Query查询不到任何数据,最终导出空白CSV。

修正方案:直接利用Ajax返回的数据生成下载

不需要再发起新的GET请求,直接把Ajax响应的CSV内容转为Blob对象,创建下载链接即可。修改后的JS代码如下:

jQuery(function($){
    "use strict"
    $(document).on('click', '.esrp-export-entry', function(e){
        e.preventDefault();
        var data = {
            'action': 'export_result_entry_csv',
            '_wpnonce': esrp_data._nonce,
            'data' : $(this).parents('.show-mark-entry-form').siblings('.wsr-result-generate').data('info')
        };

        jQuery.post(esrp_data.ajaxurl, data, function(response) {
            // 将CSV响应转为Blob对象
            const blob = new Blob([response], { type: 'text/csv' });
            // 创建下载链接
            const url = URL.createObjectURL(blob);
            const a = document.createElement('a');
            a.href = url;
            // 使用PHP中定义的文件名格式
            a.download = `members-data_${new Date().toISOString().split('T')[0]}.csv`;
            document.body.appendChild(a);
            a.click();
            // 清理资源
            a.remove();
            URL.revokeObjectURL(url);
          
           console.log(response)
           $('.downlaod').html(response);
        });
    });
});

额外优化建议

  1. 添加Nonce验证与参数校验:在PHP代码开头添加安全验证,避免CSRF攻击和参数缺失报错:
public function export_result_entry_csv(){
    // 验证nonce(替换为你实际的nonce动作名)
    if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'esrp_export_nonce')) {
        wp_die('权限验证失败');
    }
    // 校验data参数
    if (!isset($_POST['data']) || !is_array($_POST['data'])) {
        wp_die('缺少必要筛选参数');
    }
    $data = $_POST['data'];
    // ... 后续原有代码不变
}
  1. 重置WordPress查询:在endwhile之后添加查询重置,避免全局变量污染:
endwhile;
wp_reset_postdata(); // 重置WP查询状态
  1. 清理输出缓冲区:若仍有输出异常,在输出CSV前清空缓存:
ob_clean(); // 清空输出缓冲区
fseek($f, 0); 
// ... 后续header和输出代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:22:50