Ajax open(post)不会更新文件

时间:2015-06-05 13:55:56

标签: javascript ajax

我需要一个html页面,可以在服务器文件(upated_data.php)上保存一些数据。我已按照说明使用AJAX执行此操作,但服务器文件保持不变。你能帮我找到下面代码中的问题吗?

<!doctype html>
<html>
 <head><title>test</title></head>
 <body>
  <script>
   var data = '{"data": "..."}';
   xmlhttp = new XMLHttpRequest();
   xmlhttp.onreadystatechange = warn_saving;
   xmlhttp.open("POST","updated_data.php",true);
   xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
   xmlhttp.send(data);
   function warn_saving() {
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     alert(xmlhttp.responseText);
   }
  </script>
 </body>
</html>

我在服务器端的文件是:

-rw-r--r-- 1 www-data www-data  493 jun  5 15:42 test.html
-rw-r--r-- 1 www-data www-data    1 jun  5 15:43 updated_data.php

提前致谢。

2 个答案:

答案 0 :(得分:1)

您正在尝试将数据放入文件中,这不是AJAX实际执行的操作。

如果要将数据添加到文件中,则必须使用PHP,如:

$handle = fopen( 'path/to/file.txt', 'w' );
fwrite( $handle, $data );
fclose( $handle );

参考:http://www.w3schools.com/php/func_filesystem_fopen.asp

您可能需要更改$data var以表示应将其保存到文件中的方式。也许您想要更改第二个mode参数,该参数描述了如何处理文件以及在何处设置指针:

w Mode =只写并将指针设置为 BEGINNING ,如果不存在则创建文件,否则删除整个内容。

您的数据:Hello World

THIS IS A TEXT
^

变为

Hello World
^

模式=仅写入并将指针设置为文件的 END 。如果文件不存在,请创建它。

您的数据:Hello World

THIS IS A TEXT
              ^

变为

THIS IS A TEXTHello World
                         ^

我希望你明白我不能把这个问题全部给你答案,但是这应该会帮助你找到真正的方法来学习它并学会理解它。

答案 1 :(得分:0)

感谢之前的建议,我相信我已经获得了正确的代码。现在test.html调用存储在updated_data.php中的PHP代码:

<!doctype html>
<html>
 <head><title>test</title></head>
 <body>
  <script>
   xmlhttp = new XMLHttpRequest();
   xmlhttp.open("POST","updated_data.php",true);
   xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
   xmlhttp.onreadystatechange = function() {
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) 
     alert(xmlhttp.responseText);
   }
   var d = '{datos: cosa}'; 
   xmlhttp.send('data='+d);
  </script>
 </body>
</html>

并且updated_data.php保存updated_data.json:

<?php
   $v = $_POST['data'];
   file_put_contents('updated_data.json', json_encode($v));
?>