我在/Library/WebServer/Documents/ and cgi code in /Library/WebServer/Documents/cgi-bin/bot_stop.cgi
Html代码:
<button style="height: 75px; width: 85px" onclick="bot_stop()">
<img style="height: 63px"src="http://images.clipartpanda.com/stop-sign-clipart-119498958977780800stop_sign_right_font_mig_.svg.hi.png">
</button>
XMP代码:
function bot_stop()
{
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET","cgi-bin/bot_stop.cgi",true);
xmlhttp.send();
alert("I am an alert box!");
}
CGI代码:
#!/bin/bash
echo hello world
我怎么知道脚本运行了?我也收到了弹出窗口,但知道上面的功能有用。
答案 0 :(得分:0)
你咬过的东西比你一下子咬的多。我会尽力帮助你完成第一部分。
对于故障排除,最好降低复杂性。您不必在浏览器中创建XHR,而是首先在命令行中发出HTTP请求,这是一件非常简单的事情。
安装curl
。 Homebrew有最新版本。运行curl -v http://localhost/cgi-bin/bot_stop.cgi
。
如果您拒绝连接,则Web服务器未运行或者在不同于80的端口上运行。重新启动它或查看Web服务器配置配置的端口是什么。例如,如果它是8080,那么您需要改为运行curl -v http://localhost:8080/cgi-bin/bot_stop.cgi
。
如果您收到Not Found错误,或者&#34;系统找不到指定的文件&#34;,则说明Web服务器未正确配置为从该位置运行CGI程序。阅读Web服务器文档,了解如何更改配置以从/Library/WebServer/Documents/cgi-bin/
位置运行CGI程序。
如果出现内部服务器错误,请查看Web服务器错误日志。如果它说&#34;不能执行:Permission denied&#34;,那么你需要在你的CGI程序上设置可执行文件属性。如果它说&#34;脚本标题的过早结束&#34;,则CGI程序能够运行,但没有返回足够正确的HTTP响应。由于您使用bash,您需要自己构建HTTP标头:
#!/bin/bash
echo Content-Type: text/plain
echo
echo hello world
使用Perl,CGI程序看起来很像:
#!/usr/bin/env plackup
use strict;
use warnings;
my $app = sub {
return [
200,
['Content-Type' => 'text/plain'],
['hello world'],
];
};
成功的卷曲响应看起来应该类似于:
< HTTP/1.1 200 OK
< Date: Tue, 13 Feb 2018 09:03:25 GMT
< Server: blahblahblahblah
< Content-Length: 12
< Content-Type: text/plain
<
hello world
现在您知道这有效,您可以使用浏览器地址栏中的URL,然后尝试通过按钮触发XHR。使用Developer工具/ Javascript控制台检查错误详细信息。