0

私はこれを考えすぎていると確信していますが、私はそれを理解することができません。クリックされたときに.phpファイルを実行したいdojoButtonオブジェクトがあります。phpスクリプトはクエリを実行し、そこから.xlsファイルを作成して、ユーザーにダウンロードまたは開くように促します。

ボタンをクリックすると、「ロードされたxhrGet」ログが表示されますが、プロンプトが表示されないため、スクリプトが実際に実行されているとは思われません。

           <button  data-dojo-type="dijit.form.Button" id="export_xls_button">Export to .xls
                <script type="dojo/method" data-dojo-event="onClick" >
                    dojo.xhrGet({
                        url: 'subRoutines/exportXLS.php',
                        load: function(response){
                            console.debug("loaded xhrGet");
                        },
                        error: function(error){
                            console.debug("error loading xhrGet");
                        }
                    });
                </script>
            </button>

ヘルプや提案をありがとうございます。

編集:Webブラウザーでスクリプトに直接アクセスし、サーバーでphpがオンになっている場合、スクリプトは正常に実行されます。

4

1 に答える 1

3

ファイルのエクスポートにXHRを使用する必要はありません。クリックすると実行される標準リンク(または道場ボタン)をクリックして使用できますsubRoutines/exportXLS.php。リンクがクリックされると、スクリプトは通常のようにファイルを作成し、ページを離れることなくファイルと適切なhttpヘッダーをユーザーに送り返します。新しい場所のヘッダーはブラウザに送信されず、ファイルのみが送信されました。

これは、PHPでCSVファイルをエクスポートするために使用する単純なアプローチです(ヘッダーのみが必要な場合があります)。

$fh = fopen("php://output", 'w');
fputcsv($fh, $csv_headers_array, ",", '"');
foreach ($csv_content_array as $line) {
    fputcsv($fh, $line, ",", '"');
}
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=filename.csv");
fclose($fh);
exit; 

そして、あなたの道場ボタンは次のようになります:

<button data-dojo-type="dijit.form.Button" id="export_xls_button">
    Export to .xls
    <script type="dojo/method" data-dojo-event="onClick" >
        window.location = 'subRoutines/exportXLS.php';
    </script>
</button>
于 2012-09-04T00:31:13.137 に答える