2016-11-14 23 views
1

jqueryボタンonclickを使用してCSVファイルをダウンロードしようとしています。私はちょうどexport<a>タグを持っています。ここでは、作成したばかりのCSVファイルをダウンロードできるダウンロードリンクを指しています。jQueryリンク付きのcsvファイルをダウンロードonclick

// Using this jquery to send my sql query to server-side-CSV 
$('#export').on('click', function() { 
    var sqlsend = dataTable.ajax.json().sql; 
    $.post('server-side-CSV.php', 'val=' + sqlsend, function(request){ 
    //code should go here 
    }); 
}); 

そして、ここでは、私はCSVを作成しています私のPHPコードファイルの

// This is my server-side-CSV file. It's creating a csv file to  downloaded 
<?php 
require("connection.php"); 
$sql = $_POST['val']; 
. 
.more code 
. 

// loop over the rows, outputting them 
while ($row = mysqli_fetch_assoc($rows)) fputcsv($output, $row); 
fclose($output); 
exit; 
?> 

私はCSVファイルをダウンロードするために何ができますか?

EDIT: 最後に、

$('#export').on('click', function() { 
    var sqlsend = dataTable.ajax.json().sql; 
    window.location.href="server-side-CSV.php?val="+sqlsend; 
}); 
+0

フォームを使用するか、ポップアップを開くか[データURI]を使用してください(http://stackoverflow.com/questions/3665115/create-a-file-in-memory-for-user-to- – nicovank

+0

URIを使用している場合、どのように私のPHPファイルに 'sqlsend'変数を送ることができるでしょうか?私は申し訳ありません、すべてのこれはかなり新しいです。 –

+0

あなたの '要求 'はダウンロードされるファイルですか? –

答えて

0

代わりの$.postを答えを見つけ出す、場所をダウンロードするには、ブラウザを送る:

document.location.href = 'server-side-CSV.php?val='+sqlsend; 

あなたはループの前にヘッダを追加する必要があります。

header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename=file.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0"); 

this answerを参照してください。

+0

はい、私はすでにこれらのヘッダーをすべて持っています。 Stackoverflowは私にすべてのコードを追加させませんでした。 –

+0

サーバー側のCSV.phpファイルが、一部のSQLでハードコードされているかどうかを確認することをお勧めします。ブラウザから直接呼び出します。 – olegsv

+0

はい、それは私自身のSQLクエリを渡すと完全に正常に動作しています。 SQLクエリ(function)(request)を渡すと、この 'request'変数にはすべてのデータが含まれていますが、ダウンロードポップアップは表示されません。 –

関連する問題