单击Dojo按钮执行PHP脚本

Executing PHP script on Dojo Button click

本文关键字:PHP 脚本 执行 按钮 Dojo 单击      更新时间:2023-09-26

我很确定我想得太多了,但我就是想不通。我有一个dojoButton对象,我想在单击它时执行一个.php文件。php脚本运行一个查询并从中构造一个.xls文件,然后提示用户下载或打开该文件。

当我点击按钮时,我会得到"loaded 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时,脚本运行得很好。

导出文件时不需要使用XHR。您可以使用单击一个标准链接(或dojo按钮),当单击该链接时,它将执行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>