2014-04-22 24 views
0

我有一个PERL脚本download.pl这应该在按下按钮时执行。它用于下载SVG。为什么我的表单发布函数打开我的.pl文件而不是执行它?

但是,当按钮被按下时,网站显示我的perl脚本的内容,而不是执行它。为什么是这个,我该如何解决它?

这段代码是当我按下按钮,所谓:

function callOnButtonClick(){ 
      var svg = document.getElementById("mainSVG"); 
      // Extract the data as SVG text string 
      var svg_xml = (new XMLSerializer).serializeToString(svg); 
      console.log(svg_xml); 

      var form = document.getElementById("svgform"); 
      form['output_format'].value = "svg"; 
      form['data'].value = svg_xml ; 
      form.submit(); 
} 

这是我用它来执行我download.pl文件形式应该启动下载。

<form id="svgform" method="post" action="download.pl"> 
<input type="hidden" id="output_format" name="output_format" value=""> 
<input type="hidden" id="data" name="data" value=""> 
</form> 
+1

你有这两行吗? AddHandler cgi-script .cgi .pl 选项FollowSymLinks + ExecCGI – Godinall

+0

不,我没有这些?他们应该在哪里?对于不太了解,我很抱歉,我对Perl的使用很陌生。 – Vanquiza

+0

它在httpd.conf中,请参阅下面的答案。 Djizeus的回答已经指出你正确的方向,如果你没有得到他,那么你可能应该先阅读文件。 – Godinall

回答

3

这是您的Web服务器的配置问题。它似乎没有意识到它应该执行Perl脚本并返回响应,而不仅仅是提供文件。

查看Web服务器的文档,了解如何将其配置为执行perl脚本,或发布有关服务器的更多信息,以及如果您已配置服务器但尝试过但未尝试过的内容。

1

编辑你的httpd.conf。 你应该用下面的部分替换你的部分。将X替换为您的目录。

<Directory "X:\webserver\cgi-bin" /> 
    AddHandler cgi-script .cgi .pl 
    Options FollowSymLinks +ExecCGI 
    AllowOverride None 
</Directory> 
+0

非常感谢。我假设我必须改变我的文件头。目前它有以下内容:'#!/ usr/bin/env perl = pod' – Vanquiza

+0

'= pod'位于另一行。 – Vanquiza

+0

是的,相应地更改cgi-bin目录,并确保您对cgi-bin目录和cgi脚本具有读写递归权限。 – Godinall

相关问题