我有一個PHP函數呼叫PHP函數當鏈接被點擊
function ExportExcel()
{
// code
}
,並在Excel
<a>Download in Excel</a>
在頁面下載的鏈接所以我想是在用戶點擊時鏈接,將調用PHP函數,並將數據下載到Excel中。
我可能需要Ajax。我該如何去做呢?
我有一個PHP函數呼叫PHP函數當鏈接被點擊
function ExportExcel()
{
// code
}
,並在Excel
<a>Download in Excel</a>
在頁面下載的鏈接所以我想是在用戶點擊時鏈接,將調用PHP函數,並將數據下載到Excel中。
我可能需要Ajax。我該如何去做呢?
只提供那個excel文件在href裏的鏈接,瀏覽器會自動下載 如果你的文件形成DB然後提供excel.php的鏈接,並在excel.php中做excel文件的處理和它的創建。 閱讀本artical..do像
該文件並不真正存在於服務器上。有數據庫記錄,我需要在Excel中導出 – skos 2012-03-13 10:05:31
你可以處理你的JS請求scrpit文件
$("a").click(function(){
jQuery.ajax({
url: "path/to/controller",
type: "POST",
dataType: 'json',
data: {'mentod':'ExportExcel'},
success: successCallback,
error:failureCallback
});
});
可以請你解釋什麼是'url:'path/to/controller' – skos 2012-03-13 10:07:34
它意味着處理請求的頁面的URL,寫入你在href中寫入的同一個URL裏面有標籤。 – palAlaa 2012-03-13 10:09:03
下面是函數我最近Implemeted一個:
$('#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。
EDIT2: 這裏的示例代碼下載文件,讓你開始
<?php
header("Content-type: application/excel");
print($data); /* print out the contents of the excel file here */
exit();
?>
如果你不喜歡這樣,你的PHP頁面將不會從原始網頁重定向,但會彈出一個下載框而不是瀏覽器。如果您使用csv文件而不是xls文件,則需要更改MIME類型。
你可能只使用一個GET
語句,所以它會是這個樣子......
HTML
<a href="download.php?init=true">Download in Excel</a>
PHP
function ExportExcel()
{
// code
}
if($_GET['init'])
{
ExportExcel();
}
您導出到Excel的數據類型?它是XML,SQL等?數據來自何處? – Elen 2012-03-13 10:01:03
您可以隨時將函數轉換爲PHP腳本,然後將鏈接指向該腳本... – fayerth 2012-03-13 10:01:58
@Robus是的,我做了,但仍然不確定如何去做 – skos 2012-03-13 10:02:01