【发布时间】:2011-04-20 09:31:30
【问题描述】:
我正在寻找一种(正确的)方法来使用 javascript、jQuery 和 php 读取和写入 linux 文本文件。具体来说,我想用 jQuery ($("#taFile").val();) 获取 (#taFile) 的值并将其 $.post 到 php 脚本,然后将发布的值写入文本文件。
虽然我的代码大部分工作正常,但我遇到了一个障碍:当获取 textarea 的值并 $.posting 时,所有特殊字符都丢失了。具体来说,1) 所有特殊字符都丢失,2) 新行转换为空格,3) 某些特殊字符(我注意到它与 # 一起发生)之后的所有字符都丢失了。
这些仍然是脚本的粗略草稿,但是我非常愿意接受任何改进和建议!
Javascript:
$(文档).ready(函数() { $("输入:按钮").button(); $("#tabs").tabs(); $("#tabs").tabs({ select: function(event, ui) { // 当一个选项卡被选中时 文件 = ui.panel.id; console.log("js: 文件:"+file); if (file == "items" || file == "groups" || file == "whitelist" || file == "users"){ // 如果文件有效 $("#taFile").remove(); // 删除任何旧的文本区域 $("#"+file).html(''); // 添加一个新的文本区域 $.post("/php/getFile.php?action=read&file="+file, function(data){ // 使用当前文件发布 $("#taFile").val(data); // 将文件放入文本区域 }); } } }); $("#btnSubmit").click(function() { var newcfg = $("#taFile").val(); 警报(新cfg); // 这表明 newcfg 保留了 textarea 的确切值 控制台.log(newcfg); // 就像这样。 $.post("/php/getFile.php?action=write&file="+file+"&newcfg="+newcfg); // 这将新行 (\n ?) 显示为 " " (空格) 并删除所有特殊字符 (! , # ; : 等) }); });PHP:
$file = $_REQUEST['file']; $newcfg = $_REQUEST['newcfg']; $action = $_REQUEST['action']; $user = '公共'; $config = "/home/$user/mc/$file.txt"; if ($action == "读"){ $oldcfg = file_get_contents($config); 回声 $oldcfg; } else if ($action == "write") { #if 写作 $fh = fopen($config, 'w') 或 die("无法写入文件"); #打开文件 fwrite($fh, $newcfg); #写入文件 fclose($fh); #关闭文件 }我不得不删除 php 标签,因为它们会导致实际的 PHP 代码不显示。并不是说某些脚本用于在更改选项卡时首先读取文件。一切正常。
谢谢!
【问题讨论】:
标签: php javascript jquery file