Javascript ajaxopen(post)不会更新文件
我需要一个html页面,将一些数据保存在服务器文件(upated_data.php)中。我已经按照使用AJAX的说明进行了操作,但是服务器文件保持不变。你能帮我找到下面代码中的问题吗Javascript ajaxopen(post)不会更新文件,javascript,ajax,Javascript,Ajax,我需要一个html页面,将一些数据保存在服务器文件(upated_data.php)中。我已经按照使用AJAX的说明进行了操作,但是服务器文件保持不变。你能帮我找到下面代码中的问题吗 <!doctype html> <html> <head><title>test</title></head> <body> <script> var data = '{"data": "..."}';
<!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>
提前感谢。您试图将数据放入文件中,而AJAX实际上并不是这样做的 如果要将数据添加到文件中,必须使用PHP,如:
$handle = fopen( 'path/to/file.txt', 'w' );
fwrite( $handle, $data );
fclose( $handle );
参考:
您可能需要更改$data
变量,以表示将其保存到文件中的方式。另外,您可能希望更改第二个模式参数,该参数描述如何处理文件以及在何处设置指针:
w Mode=只写并将指针设置为开头,如果不存在,则创建文件,否则删除整个内容
你的数据:你好,世界
THIS IS A TEXT
^
THIS IS A TEXT
^
变成
Hello World
^
THIS IS A TEXTHello World
^
模式=仅写,并将指针设置为文件的结尾。如果文件不存在,请创建它
你的数据:你好,世界
THIS IS A TEXT
^
THIS IS A TEXT
^
变成
Hello World
^
THIS IS A TEXTHello World
^
我希望您能理解,我无法为您提供完整的答案,但这将极大地帮助您找到真正的解决方法,并学会理解它。感谢前面的建议,我相信我得到了正确的代码。现在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>
测试
xmlhttp=新的XMLHttpRequest();
open(“POST”,“updated_data.php”,true);
setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”);
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200)
警报(xmlhttp.responseText);
}
var d='{datos:cosa}';
send('data='+d);
和updated_data.php保存updated_data.json:
<?php
$v = $_POST['data'];
file_put_contents('updated_data.json', json_encode($v));
?>
您声称您正在发布表单数据,但实际上您正在发布JSON,因此我认为会出现问题。不过,负责更新文件的是您的服务器端代码,而您尚未与我们共享该代码,因此我们无法说明它为什么不起作用。Sooooo Muuuuuuuchhh coooode当jQuery所需的一切都是$.post('updated_data.php',data.)。success(函数(res){alert(res)}
-@Quentin OP正在发布一个字符串(stringified json)-也许这就是什么都没有发生的原因。@Franpena您的服务器端代码是什么?(updated_data.php)?好吧,我检查了json的大小写,更改了代码中的两行:xmlhttp.open(“POST”,“updated_data.json”,true);xmlhttp.setRequestHeader(“Content type”,“application/json”);但仍然不起作用。我无法向您发送url页面,因为我在一个没有公共连接的测试服务器中,对不起。@JeremyThille-显然添加84 KB的jQuery代码会更少。我说这是JSON,这可能是原因,但我们需要看服务器端代码才能知道。@franpena-我不知道您是如何检查的不管是json还是“echangThe”的意思,问题仍然存在——服务器端代码很重要。