0

我有一个简单的 php 代码,我嵌入在我的 html 代码中。我希望代码仅在单击按钮时运行。但是当页面自动加载时,该函数被调用。该代码将清楚地向您解释。

<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>

如何使其仅在单击按钮时运行。?

4

2 回答 2

1

你可以使用 AJAX 来获得你想要的东西。PHP 函数在你的浏览器加载页面之前运行,因为它的服务器端和任何用户操作都是用户端,你可以使用 javascript-ajax 调用来添加你需要的东西。

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

这是 jQuery ajax ..(您需要添加 jquery 库以便使用它)。(在你的 html HEAD 一个带有源 jquery 库的脚本标签)..

当您的用户单击按钮并将响应加载到他的浏览器时,它将在您的浏览器中发出请求。例子..

<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)或页面的一部分将仅响应该 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 代码处理。

于 2012-11-05T05:18:17.310 回答
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>
于 2012-11-05T06:18:28.823 回答