如何使用onClick写入文本文件?

时间:2019-05-17 16:39:49

标签: javascript php input file-io onclick

我创建了一个简单的php / javascript / html页面。

它是这样的:

  • 它从SQL查询中获取信息;
  • 它使用some-library在表上显示所有信息;
  • 每行有两个按钮。每个按钮都调用一个函数,该函数将消息以及该特定行上的信息写入文本文件中。

我的问题: 每当我刷新页面时,所有内容都被写入文件中,而无需等待我单击按钮然后编写消息。

我已经尝试过将函数调用带到for循环之外,但是并没有解决。我相信,由于它们位于循环内,因此每次我刷新页面时,都会“单击”两个按钮。

我还尝试将按钮的类型从提交改为提交,但这没有用。

这是我正在使用的代码:

for

我希望输出仅是写在文本文件上的一行消息,而这则消息是我根据对这两个按钮中任何一个的单击决定的。

如果有人可以告诉我我做错了什么,和/或告诉我我目前正在使用onClick做的另一种选择(我认为是问题所在),我将不胜感激。

如果需要,可以随时询问更多信息。

2 个答案:

答案 0 :(得分:1)

不可能。 Php在服务器端执行,而javascript(和html)在浏览器端执行。 您必须从浏览器(例如,使用javascript,例如ajax)将其发送到服务器,并在php中对其进行处理。

答案 1 :(得分:1)

不能以这种方式混合使用javascript和php函数。

我想到的第一个解决方案是简单的ajax查询。

什么是ajax?

  

AJAX 是一种用于创建快速动态网页的技术。 AJAX允许通过与后台服务器交换少量数据来异步更新网页。这意味着可以更新网页的某些部分,而无需重新加载整个页面。

简单代码:

<?php
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest' && isset($_POST['text'])):
    $output = '';
    $filename = 'file.txt';
    if (!file_exists($filename)):
        $myfile = fopen($filename, "w");
    endif;
    file_put_contents($filename, $_POST['text']);   
    $output = array("File content created");
    die(json_encode($output));
else:
?>

<?php
for ($x = 0; $x <= 10; $x++):
?>
    <button id="button" type="button" value="Clicked button <?php echo $x; ?>">A am button <?php echo $x; ?></button>
<?php
endfor;
?>

<script
src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous"></script>     
<script>
$(document).on('click','#button',function(e) {
    var my_text = $(this).val();

    $.ajax({
        type: "POST",
        dataType:"json",
        url: window.location.href,
        data: "text=" + my_text,
        beforeSend: function (data) {
            alert('Sending');
        },
        success: function (data) 
        {
            alert('Success');

        },
        error: function (data) 
        {
            alert('Error');
        }
    });     
});
</script>
<?php endif; ?>