我需要一个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
提前致谢。
答案 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));
?>