我有一个PHP函数
function ExportExcel()
{
// code
}
以及页面上的链接在Excel中下载
<a>Download in Excel</a>
所以我想要的是当用户点击该链接时,将调用PHP函数并在excel中下载数据。
我可能需要Ajax。我该怎么做呢?
答案 0 :(得分:1)
这是我最近实施的功能:
$('#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;
}
});
});
答案 1 :(得分:1)
首先让我确保你知道php只在页面首次发布时被解析。如果单击页面上的链接,则不知道同一页面上的php函数是否存在,因为该函数仅在解析代码时存在于服务器端。话虽这么说,您可以轻松创建一个名为download.php的单独页面,并在该页面上调用您的函数。然后您的链接可以链接到该页面。
如果您希望自定义下载页面作为excel文件返回给用户,您可以使用自定义php标头来说服浏览器它正在下载excel文件。 (您必须指定excel文件的MIME类型)
编辑: 这将导致下载启动您的函数调用创建的excel文件,并通过链接单击激活。你不需要任何JS或JQuery。
EDIT2: 这里是下载文件的示例代码,可以帮助您入门
<?php
header("Content-type: application/excel");
print($data); /* print out the contents of the excel file here */
exit();
?>
如果您这样做,您的php页面将不会从原始页面重定向,而是从浏览器中调出一个下载框。如果您使用csv文件而不是xls文件,则需要更改mime类型。
答案 2 :(得分:1)
您可以使用GET
语句,因此它看起来像这样......
HTML
<a href="download.php?init=true">Download in Excel</a>
PHP
function ExportExcel()
{
// code
}
if($_GET['init'])
{
ExportExcel();
}
答案 3 :(得分:0)
只需在锚点的href中提供该excel文件的链接,浏览器就会自动下载 如果您的文件形式为DB,则提供excel.php的链接,并在excel.php中进行获取excel文件和创建它的处理。 读这个艺术品......就像那样
答案 4 :(得分:0)
您可以在js脚本文件中处理请求
$("a").click(function(){
jQuery.ajax({
url: "path/to/controller",
type: "POST",
dataType: 'json',
data: {'mentod':'ExportExcel'},
success: successCallback,
error:failureCallback
});
});