将javascript数组写入文件

时间:2012-08-24 13:05:08

标签: 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 (r2.readyState == 4 && r2.status==200) {

        responsetext=r2.responseText;

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

我知道javascripts不是服务器端,这就是为什么我不能做我想要的,但我敢肯定必须有办法将alreadyexistingtags []写入tagsupdated.txt.Any help?也许我应该以某种方式通过数组到PHP?如果是这样,那么当页面加载时,当我需要等待按钮被按下时,PHP是如何执行的呢?

2 个答案:

答案 0 :(得分:3)

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

要做到这一点,只需在服务器上创建一个 new 脚本,比如writearray.php,它接受Javascript数组作为输入。然后使用AJAX向您的阵列发送请求到该文件。

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

<?php
file_put_contents("where_you_want_the_file.txt", $_POST['array']);
?>

看起来您只是将Javascript数组存储为空格分隔列表,因此Javascript看起来像这样:

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);

这种方式的工作原理是,你发送一个名为array的字段的POST,它保存了你的Javascript数组的文本表示。 PHP代码检查$ _POST ['array']以获取此值,然后将其写入您的文件。

请注意,如果您想要做更复杂的事情,您应该考虑使用JSON。并且一直非常小心你对用户数据的处理。

答案 1 :(得分:0)

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

 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);

在发送alreadyexistingtags变量之前,必须使用separator或者更好地将数组内存到字符串或更好的JSON字符串。 但是在writeTextWithoutTags.php中,ypu必须检查数据,因为javascript执行ib用户brouser并且你不能确定数据是从yavastsript发送的,而不是处理入侵者!

P.S。如果你可以访问PHP我不会理解我不明白为什么你在这里JS - 所有这些你可以在PHP中操作而不是将数据从服务器驱动到浏览器并返回