2010-12-27 11 views
2

私はHTMLテーブルを生成するPHPページを持っています。ページの下部にある「送信」ボタンをクリックすると、表のデータがTable2CSV(link here)というjqueryスクリプトに送信され、データが取得され、CSVエクスポート用の別のPHPスクリプトに送信されます。javascriptとphp csvエクスポートスクリプトを実行する最良の方法

最終的には、行動の全てがここで行われます。

<form action="getCSV.php" method ="post" > 
<input type="hidden" name="csv_text" id="csv_text"> 
<input type="submit" value="Get CSV File" 
     onclick="getCSVData()" 
</form> 


<script type="text/javascript"> 

function getCSVData(){ 
var csv_value=$('#example2').table2CSV({delivery:'value'}); 
$("#csv_text").val(csv_value); 
} 
</script> 

私は何をしたいのですが、これまでの画面に出力したHTMLテーブルを持つことなく、CSV形式のスクリプトを生成している(経由リンクは別のページをクリックします)。

私は最終的にページロード時にgetCSVdataを呼び出してからgetcsv.phpを実行するために上記のjavascript関数を変更する必要があると思いますが、JSにあまりよく慣れていない方法を正確に行う方法はわかりません。

提案がありますか?

+1

なぜテーブルデータが既に存在するサーバーに送信するのですか? –

+0

私はあなたの質問/ポイントを理解しているかわかりません。 htmlテーブルは、ブラウザ内で閲覧できる場所で生成されます。誰かがそのデータをエクスポートしたい場合は、ヘッダー情報を変更し、新しいcontent-typeでダウンロードするために別の呼び出しを行う必要があります。 – JM4

+0

それは第三者のスクリプトですか?行って、自分のものを作成するのを怠惰にしないでください。それはコードの5行です –

答えて

1

table2CSV関数を調べていないと、私はそのテーブルからCSVデータを取り出すためにHTMLテーブル要素が必要だと思います。つまり、このスクリプトを使用する必要がある場合は、HTMLテーブルのコードを生成する必要があります。

最も簡単な回避策は、display:hidden setを使用してdiv内にテーブルを作成することです。このようにして、table2CSV関数はテーブル内のデータにアクセスすることができますが、ユーザーはページ上でそれを見ることはありません。

これ以外にも、独自のサーバーサイドスクリプトを作成して、通常HTMLテーブルに返されるデータをCSVファイルに解析することはもちろん可能です。

ここでは、データがサーバー上にあり、ブラウザに送信され、JSでスクレイプされ、サーバーに送信されて再度解析されるという問題があります。サーバーがデータを解析するためにクライアントに依存していないか、またはクライアントが独自にデータを解析できた場合は、より単純です。どちらのオプションも可能ですが、独自のCSVファイル作成スクリプトを作成する必要があります。

編集:上記のあなたのコメントを読んでください。最初からCSVファイルを使用できるようにするには、DOMを初期化した後でgetCSVData()を呼び出す必要があります。ただ、あなたは(非同期的にロードされている)画像から任意のデータを引っ張っていないあなたができると仮定すると:ページを表示する準備ができているように、それを利用できるように、できるだけ早くあなたのCSVスクリプトを起動します

$(document).ready(function() { getCSVData(); }); 

ユーザーは余分なクリックをせずに

+0

素晴らしい回答 - ありがとうXenethyl – JM4

+0

@ JM4ようこそ!それが役に立てば幸い! – Xenethyl

関連する問題