0

我已经使用 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不是服务器端,这就是为什么我不能做我想做的事,但我确信必须有一种方法可以将已经存在的tags []写入tagsupdated.txt。有什么帮助吗?也许我应该以某种方式将数组传递给PHP ?如果是这样,鉴于 PHP 在页面加载时执行,当我需要等待按钮被按下时,这怎么可能?

4

2 回答 2

3

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

为此,只需在您的服务器上创建一个脚本,例如 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。并且一如既往地非常小心处理用户数据。

于 2012-08-24T13:10:06.680 回答
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);

在发送已经存在的标签变量之前,您必须将数组内爆到带有分隔符的字符串或更好地转换为 JSON 字符串。但是在 writeTextWithoutTags.php 中,ypu 必须检查数据,因为 javascript 执行 ib 用户 brouser,您不能确定数据是从 yavastsript 发送的,没有经过处理入侵者!

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

于 2012-08-24T14:34:58.973 回答