【问题标题】:Posting the value of a textarea with jquery使用 jquery 发布文本区域的值
【发布时间】: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


    【解决方案1】:

    注意:您正在使用jQuery.post() 并将您的数据设置为$_GET parameters。它应该被称为;

    $.post("/php/getFile.php", { action: "write", file: file, newcfg: newcfg },
       function(data){
         alert("Data Loaded: " + data);
       });
    

    您可以使用以下函数保留换行符:

    function splitter($content) {
    $content = str_replace(chr(10),'<br/>',$content);
    $content = str_replace("<br/><br/><br/><br/>","<br/><br/>",$content);
    return $content;
    }
    

    你的跑步方式:

    $newcfg = splitter($newcfg);
    

    typoknig 对特殊字符是正确的

    【讨论】:

    • 使用 post 的正确方法正是我所寻找的。我不需要拆分器功能,因为我需要保留 \n 而不是
      因为我正在读取和写入 unix 配置文件(其中
      没有意义)。出于与上述相同的原因,我也不需要 htmlentities 或 htmlspecialcharacters。谢谢!
    • 当您收到解决问题的答案时,您应该始终使用答案左侧的勾号来接受它。投票也不会错过。
    • 感谢您的提示。我是新来的。我试着投票给你,但我没有足够的声望。
    【解决方案2】:

    您可能想查看 PHP htmlentitieshtmlspecialcharacters

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多