【问题标题】:Write into a text file with jQuery使用 jQuery 写入文本文件
【发布时间】:2013-07-20 12:27:39
【问题描述】:

我正在尝试使用 jQuery 读取和写入文本文件。我已经编写了读取文件的函数;但我不能做的是写入文件。我有 2 个文件,read.txtwrite.txt,与代码位于同一文件夹中。

两个 jQuery 函数(如下,以及周围的服务器端 Perl 代码)是:

<!-- language: perl -->

    my $script = qq{

    \$(document).ready(function() {
     \$("#readFile").click(function() {
        \$.get('read.txt', function(data) {
          \$("#container").val(data);
        }, 'text');
     });
    });


   \$.ajax({
    url: './test.pl',
    data: {
        'myString' : "#cont"
    },
    success: function(data, textStatus, jqXHR) {
        alert('string saved to file');
    }
});

    };

    my $q = new CGI;
    print $q->header;
    print $q->start_html(
        -title => "Read a File",
        -style  => {-src => 'css/ui-lightness/jquery-ui-1.10.3.custom.css" rel="stylesheet'},
        -script => [
             {-src => 'js/jquery-1.9.1.js'},
             {-src => 'js/jquery-ui-1.10.3.custom.js'},
        ],
        );
    print $q->start_form;
    print $q->textfield(
        -style => 'font-family:verdana;width:300px;font-size:13px',
        -id => 'container',
        -value => '',
        );
    print $q->button(
        -id       => 'readFile',
        -name     => 'submit_form',
        -value    => 'Read',
        );

    print $q->textfield(
        -style => 'font-family:verdana;width:300px;font-size:13px',
        -id => 'cont',
        -value => '',
        );

    print $q->submit(
        -id       => 'writeFile',
        -name     => 'submit_form',
        -value    => 'Write',
        );
    print $q->script($script);
    print $q->end_html;

test.pl
use CGI ();
my $cgi = CGI->new;
print $cgi->header;
my $string = $cgi->param("myString");
open (FILE, ">", "./write.txt") || die "Could not open: $!";
print FILE $string;
close FILE;

【问题讨论】:

  • 您需要一个服务器端脚本来处理您的请求并更新文件
  • 我可以用 perl 做吗?我应该把这个脚本放在哪里?
  • 刚刚编辑了我的问题,有完整的代码。我还应该添加什么?
  • 如果不插入变量,为什么要使用qq?您无需添加转义的需要,适当的 HEREDOC 可能有助于区分 JS 和 Perl。听起来像您的背景,您最好先使用标准请求(指向脚本的基本 HTML 表单)在 Perl 中编写写入片段,然后在知道该片段之后添加您可能想要的任何类型的 Ajax工作。如果您要显示用户输入的内容,请注意 XSS。

标签: jquery


【解决方案1】:

出于安全原因,您不能使用 Javascript/jQuery 写入文件,因为如果可以,用户将能够轻松更改文件 url 以使用他的控制台进行编辑并造成相应的损害。更多详情可以关注this page

为了解决您的问题,我认为最好的方法是使用ajax 将您要更新的文件内容发送到远程php 文件。然后,此文件将进行更新。

【讨论】:

  • 刚刚编辑了我的问题有完整的代码。有没有其他方法可以用 perl 做到这一点?
  • 是的,我想是的,但我不使用 Perl,我不能确切地说该怎么做。但我想你可以看看这个页面:gossland.com/perlcourse/files/editing
  • 如果不使用 get 和 post,只使用 jQuery 和 html 的另一种方式呢?可能吗?谢谢
  • 不,不是。我在回答中向您解释。你真想被黑!
  • 完全不同。当你在一个网站上时,你被阅读了一个页面,并不是因为这个原因,你更新它并保存这些修改。你明白吗?
猜你喜欢
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 1970-01-01
  • 2010-10-09
  • 2019-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多