Php 将javascript数组写入文件

Php 将javascript数组写入文件,php,javascript,ajax,Php,Javascript,Ajax,我已经使用ajax将一个文件加载到一个数组中,在分割它之后,我需要再次将它保存到该文件中 function updatetags(){ var alreadyexistingtags; var responsetext; var r2 = new XMLHttpRequest(); r2.open('GET', 'tagsupdated.txt', true); r2.send(null); r2.onreadystatechange = function() { if

我已经使用ajax将一个文件加载到一个数组中,在分割它之后,我需要再次将它保存到该文件中

function updatetags(){

 var alreadyexistingtags;
 var responsetext;

 var r2 = new XMLHttpRequest();
 r2.open('GET', 'tagsupdated.txt', true);
 r2.send(null);

 r2.onreadystatechange = function() {
    if (r2.readyState == 4 && r2.status==200) {

        responsetext=r2.responseText;

        alreadyexistingtags=responsetext.split(' ');
        }       
  }
 }

我知道javascripts不是服务器端的,这就是为什么我不能做我想做的事情,但我确信一定有办法将alreadyexistingtags[]写入tagsupdated.txt。有什么帮助吗?也许我应该以某种方式将数组传递给PHP?如果是这样的话,在加载页面时执行PHP,这怎么可能呢,当我需要等待按钮按下时?

您必须使用AJAX或其他方法将数据发送回服务器,然后服务器可以将文件写入

为此,只需在服务器上创建一个新脚本,比如writearray.php,它接受Javascript数组作为输入。然后使用AJAX将请求与数组一起发送到该文件

PHP文件看起来是这样的(这是一个高度简化的示例):

其工作方式是,发送一篇带有名为array的字段的帖子,该字段保存Javascript数组的文本表示。PHP代码检查$_POST['array']以获取该值,然后将其写入文件


注意,如果您想做任何更复杂的事情,您应该考虑使用JSON。同样,在处理用户数据时也要非常小心。

您必须使用AJAX或其他方法将数据发送回服务器,然后服务器可以将文件写出来

为此,只需在服务器上创建一个新脚本,比如writearray.php,它接受Javascript数组作为输入。然后使用AJAX将请求与数组一起发送到该文件

PHP文件看起来是这样的(这是一个高度简化的示例):

其工作方式是,发送一篇带有名为array的字段的帖子,该字段保存Javascript数组的文本表示。PHP代码检查$_POST['array']以获取该值,然后将其写入文件


注意,如果您想做任何更复杂的事情,您应该考虑使用JSON。同样,在处理用户数据时也要非常小心。

对于发送数据,您必须执行另一个ajax查询,但在.send方法中,您必须传递一个包含数据的字符串 例如:

在发送alreadyexistingtags变量之前,必须将数组内爆为带分隔符的字符串,或者更好地内爆为JSON字符串。 但是在writeTextWithoutTags.php中,ypu必须检查数据,因为javascript执行ib用户brouser,并且您无法确保数据是从YavastScript发送的,而不是经过入侵者处理


另外,如果你可以访问PHP,我不明白我不明白你为什么会在这里JS-所有这些操作都可以在PHP中执行,而不是将数据从服务器驱动到浏览器,然后返回

对于发送数据,你必须执行另一个ajax查询,但在.send方法中,你必须传递一个包含数据的字符串 例如:

在发送alreadyexistingtags变量之前,必须将数组内爆为带分隔符的字符串,或者更好地内爆为JSON字符串。 但是在writeTextWithoutTags.php中,ypu必须检查数据,因为javascript执行ib用户brouser,并且您无法确保数据是从YavastScript发送的,而不是经过入侵者处理


另外,如果你可以访问PHP,我不明白我不明白你为什么会在这里JS-所有这些操作都可以在PHP中执行,而不是将数据从服务器驱动到浏览器,然后返回

你的答案就在你的问题标签中…AJAX。将您想要的任何内容传递给PHP脚本,并将PHP脚本写入tagsupdated.txt。要扩展它,最好先ping PHP,然后让PHP将其写入。您的答案就在问题标签中…AJAX。将您想要的内容传递给PHP脚本,并将PHP脚本写入tagsupdated.txt。若要扩展,最好先ping PHP,然后让PHP将其写入。附录:请记住,在实现此类功能时要非常注意安全性,因为它可能被利用在您的网站上植入恶意内容我应该像上面描述的Stas Telnov那样做:
r3.open('POST','myPHP.php',true)。。。r3.发送(数据字符串)
这就是你的意思吗?如果是的话,在php文件中数组将存储在哪里?我的意思是我将在哪里编写
$variable=“MYString”;fwrite($fh,$variable)我应该编写什么来将数组传递给$variable?@yiannis我在回答中添加了更多内容,包括一些示例代码。希望这将为您指明正确的方向。附录:在实现此类功能时,请记住要非常注意安全性,因为它可能被利用在您的网站上植入恶意内容。据我所知,我应该像上面描述的Stas Telnov那样做:
r3.open('POST','myPHP.php',true)。。。r3.发送(数据字符串)
这就是你的意思吗?如果是的话,在php文件中数组将存储在哪里?我的意思是我将在哪里编写
$variable=“MYString”;fwrite($fh,$variable)我应该编写什么来将数组传递给$variable?@yiannis我在回答中添加了更多内容,包括一些示例代码。希望这能为你指明正确的方向。
<?php
file_put_contents("where_you_want_the_file.txt", $_POST['array']);
?>
var str = your_array.join('%20');   // URL encoded spaces separating array entries
var params = "array=" + str;
var http = new XMLHttpRequest();
http.open("POST", "your_script.php", true);

//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

http.onreadystatechange = function() {
    if(http.readyState == 4 && http.status == 200) {
        // Do something on success?
    }
}
http.send(params);
 var r3 = new XMLHttpRequest();
 r3.open('POST', 'writeTextWithoutTags.php', true);
 var data_string='text='+alreadyexistingtags+'&etcParams='+etc_you_params;
 r3.onreadystatechange = function()
 {
   if (r3.readyState == 4 && r3.status==200)
   {
     alert(r3.responseText);//write result
   }       
 }
 r3.send(data_string);