单击链接时调用PHP函数


Calling PHP function when link is clicked

我有一个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文件并创建它。阅读这篇文章。。确实喜欢