我有一个PHP函数
function ExportExcel()
{
// code
}
以及页面上的链接在Excel中下载
<a>Download in Excel</a>
所以我想要的是,当用户点击该链接时,PHP函数会被调用,数据会被下载到excel中。
我可能需要去Ajax。我该怎么做?
您可能只使用GET
语句,所以它看起来像这样。。。
HTML
<a href="download.php?init=true">Download in Excel</a>
PHP
function ExportExcel()
{
// code
}
if($_GET['init'])
{
ExportExcel();
}
这是我最近实现的函数:
$('#toexcel').live("click",function() {
$.ajax({
url: "toExcel.php",
data: "sql="+encodeURIComponent(sql),
beforeSend: function(){
$("#wait").show();
},
complete: function(){
$("#wait").hide();
},
success: function(response){
window.location.href = response.url;
}
});
});
其中sql变量实际将sql查询存储到服务器,然后toExcel.php
,如果通过sql,则将其提交给服务器,并使用PHPExcel()
对象输出结果。
编辑
我想我理解你想要达到的目标。您的ExporExcel()函数已经输出了您需要的结果,对吗?如果是这样,那么你可以按照以下方式进行:
$('#toexcel').click(function() {
$.ajax({
url: "toExcel.php", // should contain and _call_ you ExportExcel() function
beforeSend: function(){
$("#wait").show(); // this is loading img to show
},
complete: function(){
$("#wait").hide(); ;// this is loading img to hide once complete
},
success: function(response){
window.location.href = response.url;
}
});
});
首先让我确保您知道php只有在第一次分发页面时才被解析。如果你点击页面上的链接,它不知道同一页面上的php函数是否存在,因为在解析代码时,该函数只存在于服务器端。话虽如此,您可以轻松地创建一个名为download.php的单独页面,并在该页面上调用您的函数。然后你的链接可以直接链接到那个页面。
如果你想让你的自定义下载页面以excel文件的形式返回给用户,你可以使用自定义php头来说服浏览器它正在下载excel文件。(您必须指定excel文件的MIME类型)
编辑:这将导致下载启动一个excel文件,该文件由您的函数调用创建,并由您的链接点击激活。您不需要任何JS或JQuery。
第2版:下面是下载文件的示例代码,用于启动
<?php
header("Content-type: application/excel");
print($data); /* print out the contents of the excel file here */
exit();
?>
如果你这样做,你的php页面不会从原来的页面重定向,而是会从浏览器中弹出一个下载框。如果您使用csv文件而不是xls文件,则需要更改mime类型。
您可以在js scrpit文件中处理请求
$("a").click(function(){
jQuery.ajax({
url: "path/to/controller",
type: "POST",
dataType: 'json',
data: {'mentod':'ExportExcel'},
success: successCallback,
error:failureCallback
});
});
只需在锚的href中提供该excel文件的链接,浏览器就会自动下载如果你的文件来自DB,那么提供excel.php的链接,并在excel.php中处理获取excel文件并创建它。阅读这篇文章。。确实喜欢