使用jQuery写入文本文件

使用jQuery写入文本文件,jquery,Jquery,我正在尝试使用jQuery读写文本文件。我已经编写了读取文件的函数;但我做不到的是写入文件。我有两个文件,read.txt和write.txt,与代码位于同一文件夹中 两个jQuery函数(下面是服务器端Perl代码)是: 我的$script=qq{ \$(文档).ready(函数(){ \$(“#读取文件”)。单击(函数(){ \$.get('read.txt',函数(数据){ \$(“#容器”).val(数据); }“文本”); }); }); \$.ajax({ url:“./test.

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

两个jQuery函数(下面是服务器端Perl代码)是:


我的$script=qq{
\$(文档).ready(函数(){
\$(“#读取文件”)。单击(函数(){
\$.get('read.txt',函数(数据){
\$(“#容器”).val(数据);
}“文本”);
});
});
\$.ajax({
url:“./test.pl”,
数据:{
“myString”:“继续”
},
成功:函数(数据、文本状态、jqXHR){
警报(“字符串保存到文件”);
}
});
};
my$q=新的CGI;
打印$q->标题;
打印$q->start\u html(
-title=>“读取文件”,
-style=>{-src=>'css/ui lightness/jquery-ui-1.10.3.custom.css“rel=”stylesheet'},
-脚本=>[
{-src=>'js/jquery-1.9.1.js'},
{-src=>'js/jquery-ui-1.10.3.custom.js'},
],
);
打印$q->start\u表单;
打印$q->textfield(
-style=>“字体系列:verdana;宽度:300px;字体大小:13px”,
-id=>“容器”,
-值=>'',
);
打印$q->按钮(
-id=>readFile',
-name=>“提交表单”,
-值=>'Read',
);
打印$q->textfield(
-style=>“字体系列:verdana;宽度:300px;字体大小:13px”,
-id=>cont',
-值=>'',
);
打印$q->提交(
-id=>writeFile,
-name=>“提交表单”,
-值=>“写入”,
);
打印$q->script($script);
打印$q->end\u html;
test.pl
使用CGI();
my$cgi=cgi->新建;
打印$cgi->标题;
my$string=$cgi->param(“myString”);
打开(文件“>”,“/write.txt”)| | die“无法打开:$!”;
打印文件$string;
关闭文件;

出于安全原因,您不能使用Javascript/jQuery写入文件,因为如果可以,用户可以轻松更改文件url以使用控制台进行编辑,并造成后续损害。有关更多详细信息,您可以查看


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

出于安全原因,您不能使用Javascript/jQuery写入文件,因为如果可以,用户可以轻松更改文件url,以便使用控制台进行编辑,并造成后续损坏。有关更多详细信息,您可以查看



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

您需要一个服务器端脚本来处理您的请求并更新文件。我可以用perl完成吗?我应该把这个脚本放在哪里?(我猜)justt编辑了我的问题有完整的代码。我还应该添加什么?如果你没有插值变量,为什么要使用
qq
?您不必添加转义的需要,适当的herdoc可能有助于区分JS和Perl。听起来,根据您的背景,您最好先使用标准请求(指向脚本的基本HTML表单)在Perl中编写一段代码,然后在知道该代码可以工作后添加任何类型的Ajax。如果要显示用户输入的内容,请注意XSS。您需要一个服务器端脚本来处理请求并更新文件。我可以用perl来完成吗?我应该把这个脚本放在哪里?(我猜)justt编辑了我的问题有完整的代码。我还应该添加什么?如果你没有插值变量,为什么要使用
qq
?您不必添加转义的需要,适当的herdoc可能有助于区分JS和Perl。听起来,根据您的背景,您最好先使用标准请求(指向脚本的基本HTML表单)在Perl中编写一段代码,然后在知道该代码可以工作后添加任何类型的Ajax。如果您正在显示用户输入的内容,请注意XSS。刚刚编辑的问题有完整的代码。有没有其他的方法可以用perl来做呢?是的,我想,但我不使用perl,也不能确切地说如何做。但是我想你可以看看这个页面:如果不使用get和post,用jQuery和html的另一种方式呢?可能吗?谢谢不,不是。我在回答中解释了你。你真的想被黑客攻击!这是完全不同的。当你在一个网站上,你正在阅读一个页面,而不是因为这个原因,你更新它并保存这些修改。你明白吗?刚刚编辑了我的问题有完整的代码。有没有其他的方法可以用perl来做呢?是的,我想,但我不使用perl,也不能确切地说如何做。但是我想你可以看看这个页面:如果不使用get和post,用jQuery和html的另一种方式呢?可能吗?谢谢不,不是。我在回答中解释了你。你真的想被黑客攻击!这是完全不同的。当你在一个网站上,你正在阅读一个页面,而不是因为这个原因,你更新它并保存这些修改。你明白吗?
<!-- 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;