我创建了一个简单的php / javascript / html页面。
它是这样的:
some-library
在表上显示所有信息; 我的问题: 每当我刷新页面时,所有内容都被写入文件中,而无需等待我单击按钮然后编写消息。
我已经尝试过将函数调用带到for
循环之外,但是并没有解决。我相信,由于它们位于循环内,因此每次我刷新页面时,都会“单击”两个按钮。
我还尝试将按钮的类型从提交改为提交,但这没有用。
这是我正在使用的代码:
for
我希望输出仅是写在文本文件上的一行消息,而这则消息是我根据对这两个按钮中任何一个的单击决定的。
如果有人可以告诉我我做错了什么,和/或告诉我我目前正在使用onClick做的另一种选择(我认为是问题所在),我将不胜感激。
如果需要,可以随时询问更多信息。
答案 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; ?>