0

我使用 jquery $.post 将 HTML 表数据作为 json 发布到服务器端,用于将整个表数据写入 csv 文件。但这不会将 csv 输出为用户可下载的。

我想弹出 csv 文件(这通常在我们下载文件时发生。你知道 csv 的 SAVE 或 OPEN 框)

客户端代码

//selectedData is having the data as json 

$.post('ajax/csv_download.php', { 
    selectedData: JSON.stringify(selectedData) 
}, function(html){  });

服务器端代码

   global $fh; 
   $fh = @fopen( 'php://output', 'w' );
   $post_data = json_decode($_POST['selectedData']);
   foreach ($post_data as $arr)
   {
     $val1 = $arr->val1  ;
     $val2 = $arr->val2 ;
     $val3 = $arr->val3 ;
     $val4 = $arr->val4 ;
     $val5 = $arr->val5 ;
      $out = array($val1,$val2,$val3,$val4,$val5);
       fputcsv($fh, $out);
      }
4

1 回答 1

0

听起来您想在 php.ini 中将“Content-Type”设置为“text/plain”后将 CSV 文件的内容写回浏览器。根据 Web 浏览器的配置方式,它将提示用户保存/打开文件。

<?php 
  $content="name,age,height,weight,gender"; 
  $file="persons.csv";

  header("Content-Type: text/plain"); 
  header("Content-disposition: attachment; filename=$file"); 
  header("Content-Transfer-Encoding: binary"); 
  header("Pragma: no-cache"); 
  header("Expires: 0");

  echo "$content";
?>
于 2013-04-24T03:40:25.983 回答