我想从一个在线数据库中检索csv文件。但是,由于一些XSS问题,我无法直接使用ajax,但需要在perl-cgi文件上进行中继。
我已经有了一个可以查询csv文件的perl-cgi文件,并将该文件的内容写入名为$ text的perl变量中。以下是一些代码段:
#!/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 varaiable。
感谢您的帮助
答案 0 :(得分:1)
Javascript是一种客户端语言,而Perl是一种服务器端语言。这意味着您将无法直接将Perl变量的值读入Javascript。
可以做的是让Perl脚本输出其操作的结果。然后,您的Javascript通过AJAX调用此Perl脚本并读取结果。
这是一些伪代码来说明我的意思:
Perl脚本:csv_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();
}