单击链接时调用PHP函数

时间:2012-03-13 09:58:55

标签: php ajax

我有一个PHP函数

function ExportExcel()
{
   // code
}

以及页面上的链接在Excel中下载

<a>Download in Excel</a>

所以我想要的是当用户点击该链接时,将调用PHP函数并在excel中下载数据。

我可能需要Ajax。我该怎么做呢?

5 个答案:

答案 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
 });
});