php - 在 Dojo 按钮上单击执行 PHP 脚本

标签 php javascript dojo

我很确定我想得太多了,但我就是想不通。我有一个 dojo Button 对象,我想在单击它时执行 .php 文件。 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 时,该脚本运行得很好。

最佳答案

您不需要使用 XHR 来导出文件。您可以使用单击标准链接(或 dojo 按钮),单击该链接后将执行 subRoutines/exportXLS.php。单击链接时,脚本会像平常一样构建文件,并将文件和适当的 http header 发送回用户,而无需离开页面。没有新的位置 header 发送到浏览器,只是一个文件。

这是我用 PHP 导出 CSV 文件的简单方法(您可能只需要 header ):

$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>

关于php - 在 Dojo 按钮上单击执行 PHP 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12254456/

相关文章:

PHP 不显示错误或警告

php - 在 Paypal 付款页面上按“后退”按钮后,我的购物车在 Magento 1.7 中被清除

javascript - 从 JSON 到 Actionscript

javascript - jQuery .html() 不会替换 javascript 图表

jquery - Struts2 插件 - Dojo 还是 jQuery 或者...?

php - 按用户对 mysql 结果进行分组

javascript - 在 joomla 3 中使用 window.location

javascript - 使用 Bokeh 的交互式 slider

javascript - 您如何模拟作为函数的 Angular 服务?

javascript - 如何使用 dojo dijit/form/DropDownButton 将子菜单项添加到菜单项?