简单的 Javascript http 请求片段但不起作用

Posted

技术标签:

【中文标题】简单的 Javascript http 请求片段但不起作用【英文标题】:Simple Javascript http request snippet but not work 【发布时间】:2013-09-16 15:50:13 【问题描述】:

部分教程修改代码如下:

xmlhttp=new XMLHttpRequest();
var url = "get_data.pl";    
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.onreadystatechange = function() 
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200) 
        alert(xmlhttp.responseText);
    

xmlhttp.send(null);

我希望执行 get_data.pl 脚本并返回运行结果(打印字符串“test”),但我只在 xmlhttp.responseText 中获得了 get_data.pl 的所有行。我应该怎么做?

get_data.pl 如下:

#!C:/Perl/bin/perl.exe
use strict;
use warnings;

&main;

sub main()
   
print "test";// I'd like the script being executed by Perl interpreter and return the string "test" .   

是的,Gar,你是对的,谢谢。我正在使用 Apache,我修改了 httpd.conf 的处理程序行(取消注释并添加 .pl),如你所说。现在问题似乎解决了,但我遇到了另一个错误: POST http://localhost/get_data.pl 403(禁止)

我将 get_data.pl 放在 htdocs 文件夹中,并且已经将安全选项(OS Win7)设置为执行权限。那为什么被禁止你能再次帮助我? 是的,我已经从命令行运行 .pl 并且没有错误。 通常 .pl 放在 cgi-bin 文件夹中,该文件夹是带有“htdocs”的兄弟文件夹。 当我将 .pl 放入 /cgi-bin 并将 url 修改为“../cgi-bin/get_data.pl”时,我收到错误 500,我猜服务器没有找到该文件。那么我在 httpd.conf 中错过的任何其他配置?无论如何,我将其移至 htdocs 文件夹以避免错误 500...

【问题讨论】:

首先从 cmd 行运行你的 perl。 是的,我试过了,它运行正常,没有错误。 配置中的“cgi-bin”定义是什么? htdocs 没有执行权限,请将所有可执行文件放在 cgi-bin 中 @anaconda_wly:再次从 cmd 行运行 perl 脚本。就目前而言,它只会产生语法错误(因为此处使用了错误的注释语法)。除此之外,您没有打印 HTTP 标头,因此它无法工作。 @Rezic:还有迈克尔,很抱歉我在深夜的时区回复晚了。我将 .pl 移至 cgi-bin 文件夹;验证 scriptalias 指向正确的 cgi-bin 路径;如rezic所说,添加http标头。现在我得到了一个由 get_data.pl 打印的页面。一切正常,但我仍然有一个问题: 【参考方案1】:

请确保您在 http 服务器中为 .pl 文件添加了处理程序。

【讨论】:

以上是关于简单的 Javascript http 请求片段但不起作用的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 - Golang 实现简单的 Web 服务器

HTTP POST 请求适用于 Postman,但不适用于我的 Web 应用程序的 JavaScript 提取 [关闭]

javascript 简单的vanilla JavaScript函数来发出AJAX请求。演示:http://jsfiddle.net/jsL14orc/9/embedded/result/

片段中的请求权限

Jersey REST GET 正在工作,但 PUT 没有。请求的资源不允许指定的 HTTP 方法

如何对媒体片段的任何部分进行范围请求?