Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ajaxopen(post)不会更新文件_Javascript_Ajax - Fatal编程技术网

Javascript ajaxopen(post)不会更新文件

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": "..."}';

我需要一个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>

提前感谢。

您试图将数据放入文件中,而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”的意思,问题仍然存在——服务器端代码很重要。