我对创建 Web 应用程序还很陌生,所以我对在 Web 服务器上工作非常不熟悉。只是为了让大家知道,我正在实现 html、javascript、strawberry perl、AJAX,并在 APACHE 2 Web 服务器上运行。我终于让我的网络应用程序工作了,我有一个 html 文件,它调用我的 htdocs 目录中的 perl 脚本。这是我的 .html 文件的模型供引用,这个文件只是提醒用户 perl 脚本打印的输出:
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc() {
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
var str;
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
// Get output from perl script and print it
str = xmlhttp.responseText;
alert(str);
}
}
xmlhttp.open("GET","http://localhost/try.pl" , false); //perl script
xmlhttp.send();
}
</script>
</head>
<body>
<h2>Example</h2></div>
<button type="button" onclick="loadXMLDoc()">Display</button>
</body>
</html>
因此这个文件 test.html 调用同一目录中的 perl 脚本 [try.pl]。此外,perl 脚本仅打印一个数字,以便提醒用户该数字。这只是我的实现的一个例子。我实际的 perl 脚本和 java 脚本[在就绪状态 block 内]要复杂得多。现在我必须向我的网络应用程序添加功能,所以我的问题是:
我希望在发生不同事件时运行第二个单独的 Perl 脚本。例如,当单击按钮时,将运行此 perl 脚本。我将有另一个不同的事件,比如双击图标或其他东西,这将需要调用第二个 perl 脚本。我是否只需让新事件调用一个不同的函数 [第一个称为 Loadxmldoc()],该函数与我这里的函数几乎相同,只是它在就绪状态 block 中有不同的代码并在最后调用不同的 perl 脚本它的?我对如何实现这个有点困惑。
另外,如果我的 javascript 代码中有一个文件名列表,我需要使用 perl 脚本处理每个文件。目前我只处理一个,所以调用我这里的 perl 脚本就可以了。我查遍了整个互联网,试图找到如何做到这一点,但似乎每个解释都只涵盖如何调用“a”CGI 脚本。因此,在我的代码中,比如说我要“警告”用户的地方,我将有一个存储文件名的数组。我需要迭代这个数组,对于每个文件名 [数组元素],我需要调用相同的 perl 脚本来处理该文件。我应该如何实现这个?目前,我的 html 文件仅调用 perl 脚本一次,并且我不知道如何为每个文件调用它,因为我的 GET 命令超出了我的就绪状态 block ...
任何帮助或指导将不胜感激。我预计很快就会交付,但我花了太多时间筛选重复的示例,这些示例对我没有帮助......:/
最佳答案
就概括您的 AJAX 请求而言,您可以创建一个函数(或者更确切地说,一组函数)来处理不同类型的响应,如下所示:
var requests = [];
requests['script1'] = "http://localhost/try.pl";
requests['script2'] = "http://localhost/try2.pl";
var response_processing = [];
response_processing['script1'] = function (xmlhttp) {
var str = xmlhttp.responseText;
alert(str);
};
// Here, you can add more functions to do response processing for other AJAX calls,
under different map keys.
现在,在您的 AJAX 代码中,您可以根据您的脚本名称调用适当的请求和适当的响应处理器(传递给 loadXMLDoc()
调用,如下所示): loadXMLDoc("script1 ");
function loadXMLDoc(script_name) {
// Your generic AJAX code as you already implemented
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
response_processing[script_name](xmlhttp);
// Careful so script_name doesn't get closured in onreadystatechange()
}
}
xmlhttp.open("GET", requests[script_name], false); //perl script
xmlhttp.send();
}
关于javascript - 通过 APACHE 服务器调用多个 perl 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17013409/