使用javascript将数据写入服务器文件+;php

使用javascript将数据写入服务器文件+;php,javascript,php,html,Javascript,Php,Html,编辑:感谢您消除了我对PHP和Javascript的困惑。必须使用AJAX 我只是想用PHP/Javascript 我有一个像这样的剧本 <head> <?php function writeToFile($file, $data) { file_put_contents($file, $data); } ?> <script> function funct() { <

编辑:感谢您消除了我对PHP和Javascript的困惑。必须使用AJAX

我只是想用
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>

函数funct(){
}
window.onload=funct;

不幸的是,
text.txt
是空的。我遗漏了什么?

您混淆了服务器端语言和客户端语言

<?php
function writeToFile($file, $data) {
    file_put_contents($file, $data);
}

    writeToFile('text.txt', 'hello'); 

?>

上述措施将奏效

标记用于javascript(在客户端工作-即在浏览器中)


要从网页上用PHP调用脚本,您需要了解AJAX——但我首先要学习一点客户端语言和服务器端语言——在单击之前,它可能会让人困惑

您应该使用fopen获取文件句柄,然后使用fputs写入该文件。除此之外,您不能仅仅使用javascript来执行php命令

其工作原理如下:

用户从服务器请求一个.php文件。服务器执行该文件中的php代码,并将其输出作为HTML写入脚本的其余部分。由于Javascript是在客户端执行的,php的工作已经由服务器完成了。因此,您的客户实际得到的是:

<head>

  <script>
  function funct() {

  }
  window.onload = funct;
  </script>
</head>

函数funct(){
}
window.onload=funct;
如果您想在用户进行输入时执行一些php函数,并且不想重新加载页面,那么可以检查ajax。但出于您的目的,我认为您应该阅读有关fopen、FPUT等的内容


您不能像那样同时使用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)零件。您必须在服务器上创建名为script.php的新文件,并向其中添加脚本的php内容(
writeToFile()
function,function call)

由于phpjavascript的执行不同,您的代码将无法工作。php(服务器端)将首先执行,并将同时执行这两个命令

  <?php
     function writeToFile($file, $data) {
         file_put_contents($file, $data);
     }
  ?>


从您的代码和html结果将被发送到客户端。你猜怎么着?下面是将呈现给javascript的代码

<head>
  <script>
      function funct() {          
      }
      window.onload = funct;
  </script>
</head>

函数funct(){
}
window.onload=funct;
因此,如果文件
text.txt
位于客户端,则需要使用ajax来处理此问题。这是对Ajax的一个很好的介绍


祝你好运

哦,好的。我对PHP非常缺乏经验,所以我从这里的一个答案中提取了这种语法:我使用PHP和Javascript的原因是我想获取浏览器的用户代理字符串。我想我需要使用Ajax不是问题-我有时还是会对一些东西感到困惑(等到你使用JSON-这需要花一点时间才能弄清楚!)-服务器上发生了
内部的任何事情-broswer对此一无所知,直到你使用
echo
或类似工具。javascript也是如此——发生在浏览器上,服务器对此一无所知,除非你
项目发布到服务器上(告诉服务器一些信息)——在谷歌上搜索“服务器端vs客户端语言”——希望这会有所帮助不,不,不,不,除了这个很好的答案,所以+1
<head>
  <script>
      function funct() {          
      }
      window.onload = funct;
  </script>
</head>