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

时间:2014-03-28 17:27:17

标签: javascript php html

编辑:感谢您清除我对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>

不幸的是,text.txt是空的。我错过了什么?

4 个答案:

答案 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的一个很好的介绍

祝你好运