【问题标题】:WordPress - Export table as csv using jQuery/AjaxWordPress - 使用 jQuery/Ajax 将表格导出为 csv
【发布时间】:2016-03-22 11:14:24
【问题描述】:

问题::我正在开发一个插件。这个插件在 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。但我不确定如何从这里继续前进。我的意思是如何处理此响应并提示用户保存/下载文件。

有什么帮助吗?

【问题讨论】:

  • 您能否通过您的 FTP 检查 wp 文件夹的根目录中是否有 .csv 文件?
  • 刚刚检查过。它不在服务器中。
  • @dingo_d,我确实检查过。但是他在服务器中创建了一个文件,但无法显示下载对话框。虽然我的文件实际上并没有被创建。
  • 怎么样?只需将函数exprot_to_csv() 的内容放入exprot_to_csv.php,然后单击调用该文件;) 应该可以工作:)

标签: php jquery ajax wordpress csv


【解决方案1】:

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

看看这个问题: Download file through an ajax call php

这个具体的答案: https://stackoverflow.com/a/11452917 一定要看看达里奥的回答

总结 -

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

    提供您的文件
    'header('Content-Description: File Transfer');'
    

这适用于 WordPress。使用管理 Ajax。 干杯

【讨论】:

    【解决方案2】:

    希望这能解决您的问题。

    在 jQuery 中:

     window.location = response->in success
    

    Ajax 动作:

    请删除所有标题

    echo admin_url($filename);
    die;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 2016-03-17
      • 2020-11-14
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2020-12-04
      相关资源
      最近更新 更多