我已经使用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是如何执行的呢?
答案 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中操作而不是将数据从服务器驱动到浏览器并返回