gpt4 book ai didi

javascript - 使用 jquery $.ajax() 调用 perl CGI

转载 作者:行者123 更新时间:2023-11-30 15:02:15 25 4
gpt4 key购买 nike

我试图通过使用 jQuery 的 ajax 调用来调用带有 .cgi 扩展名的 perl 脚本,但运气不佳。在命令行上,应用程序运行良好,但在点击事件后在浏览器中使用 JS 调用它时,似乎没有返回任何内容。

如果有人能指出出了什么问题,我们将不胜感激。

FYI 权限设置为 755。apache2 处理程序设置为 .cgi .pl .py .ppl 和 .perl,所以我知道这不是处理程序或权限问题。

.js文件

function getData() {

var data = $("#textBox").val(); // this contains a small string

$.ajax({
url:"/public_html/cgi-bin/emailSubList.cgi",
type:"GET",
data:"data="+data,
async:false,
success:function(res){
alert("result is: " + res);
}
});
}

.cgi perl脚本

#!usr/local/bin/perl

use CGI;
use DBI;
use strict;

my $in = new CGI;
my $dataIn = $in->param('data');
#this connects, but I don't need to share the login to all
my $dbh = DBI->connect("DBI:mysql:database:username:password);
my $sth;
my $result;

$sth = $dbh->prepare("SELECT id FROM dataList WHERE data=?");
$sth->execute($dataIn);

my @res = $sth->fetchrow_array();

if(@res > 0) {
$result = 'Data has already been submitted';
}
else {
$sth = $dbh->prepare("INSERT INTO dataList ($dataIn) VALUES (?)");
$sth->execute($dataIn);

$result = 'Data added!';
}

print $in->header('text/plain;charset=UTF-8');
print "$result";

更新:抛出一个错误,500 内部服务器错误,但我不明白为什么,因为权限是 755 并且语法检查正常 perl -wc script_name.cgi 关于如何调试这个或其他要检查的东西会非常有帮助。

上面是用网页中的点击事件调用的,但它似乎没有执行 perl 应用程序。这里的目标是通过简单的 ajax 调用将数据发送到数据库并从同一个数据库返回它或其他东西。

最佳答案

OP 已发表评论,说明问题已解决。由于他似乎不想发布一个答案来为其他有类似问题的人解释它,所以我会这样做。

如果您要将文件从 Windows 上传到 Unix/Linux 服务器,那么以 ASCII 模式执行此操作很重要。这样,所有 Windows 风格的行尾字符都会自动转换为 Unix 风格的行尾字符。如果您不这样做,那么当您的文件到达服务器时,它似乎全部在一行上(因为无法识别 Windows 样式的行结束字符)。

这对于使用 shebang 行执行的程序尤其重要(当然,Perl 程序也属于该类别)。 shebang 行应该包含用于执行代码的程序的路径。如果该行没有结束,您很可能会遇到一些非常奇怪的行为。

值得再补充几点:

  • 这个问题几乎肯定会在网络服务器错误日志中留下有用的消息。
  • 这就是为什么值得在您将用于部署的同一平台上进行开发的一个很好的理由。有了适用于所有平台(包括 Windows)的免费虚拟机环境,您没有理由不能在 Windows 机器上的 Linux 中进行开发。

关于javascript - 使用 jquery $.ajax() 调用 perl CGI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com