perl cgi与javascript对话
我想从一个在线数据库中检索csv文件。但是,由于一些XSS问题,我不能直接使用ajax,而是需要使用perl cgi文件 我已经有了一个可以运行的perl cgi文件,它可以查询csv文件,并将文件内容写入名为$text的perl变量中。以下是一些代码片段:perl cgi与javascript对话,javascript,database,perl,cgi,xss,Javascript,Database,Perl,Cgi,Xss,我想从一个在线数据库中检索csv文件。但是,由于一些XSS问题,我不能直接使用ajax,而是需要使用perl cgi文件 我已经有了一个可以运行的perl cgi文件,它可以查询csv文件,并将文件内容写入名为$text的perl变量中。以下是一些代码片段: #!/usr/bin/perl use strict; use CGI; use HTTP::Request::Common qw(POST); use LWP::UserAgent; # construct cgi object m
#!/usr/bin/perl
use strict;
use CGI;
use HTTP::Request::Common qw(POST);
use LWP::UserAgent;
# construct cgi object
my $q = CGI->new;
# create a post request
my $useragent = LWP::UserAgent->new();
my $request = POST '.....', [
#something goes here
];
my $response = $useragent->request($request);
my $text = $response->content;
print $text;
我对下一步做什么有一些大致的想法,但对细节不太确定。我将把这个perl-cgi文件上传到我的网站所在的服务器上,上传到名为cgi-bin的文件夹中。我只是想知道如何从javascript调用perl cgi文件,并将$text的内容写回javascript变量
感谢您的帮助Javascript是客户端语言,而Perl是服务器端语言。这意味着您将无法将Perl变量的值直接读入Javascript 您可以做的是让Perl脚本输出其操作的结果。然后,Javascript通过AJAX调用此Perl脚本并读取结果 下面是一些伪代码来说明我的意思: Perl脚本:csv\u worker.cgi
// retrieve csv file into $text as per OP
print "Content-type: text/csv\n\n";
print $text;
Javascript
function request() {
var xmlhttp;
if (window.XMLHttpRequest) {
// Supports newer browsers
xmlhttp=new XMLHttpRequest();
} else {
// Supports older IE versions (IE 5/IE 6)
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById("result").innerHTML = xmlhttp.responseText;
}
}
xmlhttp.open("GET","csv_worker.cgi",true);
xmlhttp.send();
}
嗨,Jared Ng,我刚试过,至少这次我打印了一些东西,但是为什么不给我显示csv文件,而是显示。。。perl文件的内容。我错过了什么吗?@Josh听起来您的web服务器没有配置为将Perl文件解释为可执行脚本。您确定Perl文件位于web服务器配置的“cgi-bin”目录中吗?如果您使用的是Apache,请检查httpd.conf@Jared,我使用命令行(来自SSH secure shell)执行perl cgi文件,它会打印csv文件的值。我有一个疑问:我应该把cgi-bin文件夹放在public_-htm中,还是放在同一个目录中?ThanksIt应该位于web服务器配置为执行cgi脚本的目录中。检查您的服务器配置。我会的,但是如果我可以从命令行执行perl cgi文件(如上所述),这意味着我的服务器配置正确,对吗?