2012-11-05 98 views
0

我有一個簡單的PHP代碼,我嵌入我的HTML代碼。我希望代碼只在單擊按鈕時運行。但是當頁面自動加載時,函數被調用。該代碼將清楚地解釋你。php代碼之前通過javascript調用

<meta http-equiv="X-UA-Compatible" content="IE=9"/> 
<script> 
function exportcsv() 
{ 
<?php exportcsv(); ?>; 
} 
</script> 
<?php 
function exportcsv() 
{ 
$File = "YourFile.txt"; 
$Handle = fopen($File, 'w'); 
$Data = "Visual BI Solutions\n"; 
fwrite($Handle, $Data); 
$Data = "ajay,praveen,musthafa,sanjay"; 
fwrite($Handle, $Data); 
fclose($Handle); 
} 
?> 
<button onClick="exporttxt()">Export</button> 

如何讓它只在單擊按鈕時才運行。

+5

PHP在**服務器端**上運行,所以它在**之前運行**將頁面輸出到客戶端。如果您需要運行PHP代碼來響應按鈕點擊(或任何**客戶端**事件),請使用AJAX。 – Passerby

+2

爲此使用Ajax –

+0

任何其他去沒有使用ajax? –

回答

1

您可以使用AJAX獲取您想要的內容。 PHP函數在瀏覽器加載頁面之前運行,因爲它的SERVER端和任何用戶操作都是用戶端,您可以使用javascript-ajax調用來添加所需內容。 。

http://api.jquery.com/jQuery.ajax/

這裏是jQuery的AJAX ..(你需要添加的jQuery的lib,所以你可以使用它)。 (在你的HTML頭一個腳本標籤與源jQuery的lib)

當你的用戶點擊按鈕,它會在瀏覽器中發出請求,並在他的瀏覽器加載responde。例如..

<script> 
$(document).ready(function(){ 
    $("#buttonID").click(function(){ 
     $.ajax({ 
      url: "script.php", 
      type: "POST", 
      data: {action : 'exportcsv'}, 
      dataType: "text", 
      success: function(responde){ 
       alert(responde); /*This will show to user as message the responde*/ 
      } 
     }); 
    }); 
}); 
</script> 

在你的PHP你必須PAGE(在我的情況的script.php)或頁的部分將responde只爲Ajax調用..這意味着它不會顯示除了答案的任何其他信息該呼叫的..

function exportcsv() 
{ 
$File = "YourFile.txt"; 
$Handle = fopen($File, 'w'); 
$Data = "Visual BI Solutions\n"; 
fwrite($Handle, $Data); 
$Data = "ajay,praveen,musthafa,sanjay"; 
fwrite($Handle, $Data); 
fclose($Handle); 
} 
if(isset($_POST['action']) && $_POST['action']=='exportcsv'){ 
    exportcsv(); 
    echo "SUCCESS"; 
    exit(); /*To prevent outputing other data..*/ 
} 

你可以在你的主PHP文件設置,但它必須是在你的頁面的第一行,以便有之前沒有其它輸出。 exit()將阻止所有下一個php代碼進行處理。

0

如果您不想使用AJAX,只需將按鈕張貼到同一頁面即可。你會得到一個頁面刷新,但該功能不會啓動,直到按下按鈕。

<meta http-equiv="X-UA-Compatible" content="IE=9"/> 
<?php 
function exportcsv() 
{ 
$File = "YourFile.txt"; 
$Handle = fopen($File, 'w'); 
$Data = "Visual BI Solutions\n"; 
fwrite($Handle, $Data); 
$Data = "ajay,praveen,musthafa,sanjay"; 
fwrite($Handle, $Data); 
fclose($Handle); 
} 
if(isset($_POST['export'])) exportcsv(); 
?> 
<form method="post"> 
<input type="submit" name="export" value="Export" /> 
</form>