我正试图使用PHP/Javascript
我有一个类似
的脚本<head>
<?php
function writeToFile($file, $data) {
file_put_contents($file, $data);
}
?>
<script>
function funct() {
<?php writeToFile('text.txt', 'hello'); ?>
}
window.onload = funct;
</script>
</head>
不幸的是,text.txt
是空的。我错过了什么?
答案 0 :(得分:5)
您将服务器端语言与客户端语言混淆。
<?php
function writeToFile($file, $data) {
file_put_contents($file, $data);
}
writeToFile('text.txt', 'hello');
?>
以上将有效。
标签适用于javascript(适用于客户端 - 即在浏览器中)
要从网页上用PHP调用你的脚本,你需要先看看AJAX - 但我首先要先了解一下客户端与服务器端语言的相关内容 - 直到点击它才会让人感到困惑!
答案 1 :(得分:1)
您应该使用fopen获取文件句柄,然后使用fputs写入该文件。最重要的是,你不能只使用javascript来执行php命令。
它的工作原理如下:
用户从服务器请求.php文件。服务器在该文件中执行php代码,并将其作为HTML输出写入脚本的其余部分。由于Javascript是在客户端执行的,因此php内容已经由服务器完成。所以你的客户实际得到的是:
<head>
<script>
function funct() {
}
window.onload = funct;
</script>
</head>
如果你想在用户输入并且不想重新加载页面时执行一些php函数,你可以检查ajax。但出于你的目的,我认为你应该阅读有关fopen,fputs等的内容。
http://www.php.net/manual/de/function.fopen.php http://www.php.net/manual/de/function.fputs.php
答案 2 :(得分:1)
你不能像这样一起使用PHP和javascript。你应该使用AJAX。所以像这样重写funct()
:
function funct() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert('Writing completed!');
}
}
xmlhttp.open("GET", "script.php", true);
xmlhttp.send();
}
请注意xmlhttp.open("GET", "script.php", true);
部分。 Yu必须为你的服务器创建一个名为script.php的新文件,并将脚本的PHP内容添加到它(writeToFile()
函数,函数调用)
答案 3 :(得分:1)
由于 php 和 javascript 的执行不同,您的代码无效。 php(服务器端)将首先执行并将执行两者
<?php
function writeToFile($file, $data) {
file_put_contents($file, $data);
}
?>
AND
<?php writeToFile('text.txt', 'hello'); ?>
从您的代码中,html结果将发送到客户端。你猜怎么着 ?将出现在javascript中的代码如下
<head>
<script>
function funct() {
}
window.onload = funct;
</script>
</head>
因此,如果文件text.txt
在客户端,那么您需要使用ajax来处理这个问题。 Here是对Ajax的一个很好的介绍