WordPress - 使用jQuery / Ajax将表导出为csv

时间:2016-03-22 11:14:25

标签: php jquery ajax wordpress csv

问题::我正在开发一个插件。此插件在WP数据库中创建自定义表。如何使用Ajax从该表导出数据?

我在哪儿?:我创建了钩子和处理程序。我实际上可以获取数据。请参阅下面的代码。

add_action ( 'wp_ajax_nopriv_exportcsv', 'exprot_to_csv' );
add_action ( 'wp_ajax_exportcsv', 'exprot_to_csv' );    

<script type="text/javascript">
 jQuery("#export-csv").on("click",function(e){
        jQuery.ajax({
            type: "POST",
            url: ajaxurl,
            data: {"action":"exportcsv"},
            success: function(response){alert(response);}
            })
        });</script>        


function exprot_to_csv(){

global $wpdb;
$table_prefix = $wpdb->prefix;
$table = $table_prefix.'my_custom_table';

$result = $wpdb->get_results("SELECT * FROM ".$table."");
    foreach ($result as $row) {

        $output .="\n";
        $output .='"'.$row->post_id.'",';
        }
        $output .="\n";
        $file = "custom_table";
        $filename = $file."_".date("Y-m-d_H-i",time());
        header("Content-type: application/vnd.ms-excel");
        header("Content-disposition: csv" . date("Y-m-d") . ".csv");
        header( "Content-disposition: filename=".$filename.".csv");

        echo $output;
        exit;

}

在警告框中,我按预期获得逗号分隔的帖子ID。但我不确定如何继续前进。我的意思是如何处理此响应并提示用户保存/下载文件。

任何帮助?

1 个答案:

答案 0 :(得分:0)

您接近...!我遇到了同样的问题,尝试了类似的解决方案。

签出此问题: Download file through an ajax call php

还有这个具体答案: https://stackoverflow.com/a/11452917 确保查看达里奥的答案

摘要-

  1. AJAX不适用于流下载。
  2. 这里的解决方案是制作一个iFrame
  3. 使用jQuery
  4. PHP文件加载到该iFrame
  5. 通过文件传输

    提供文件服务
    'header('Content-Description: File Transfer');'
    

这在WordPress中有效。使用Admin-Ajax。 干杯