gpt4 book ai didi

javascript - Ajax 调用 perl 脚本

转载 作者:行者123 更新时间:2023-11-28 03:35:04 25 4
gpt4 key购买 nike

我正在使用 perl Mason 进行 Web 开发。

我有一个应用程序,它从用户上传的文件中获取数据,并将其放入 html 表中。

然后,我想消化数据,并在用户验证后,将其保存到服务器上的csv文件中。

我尝试从 javascript 进行 AJAX 调用,将数据从表中抓取到 perl 接收器,但这似乎不起作用...(错误日志没有显示任何内容,未创建文件,就好像未调用脚本一样,尽管访问日志显示对 receiver.pl 的 POST 成功)

我的代码如下:

HTML

该表包含很多行,如果重要的话,大约有 200 行。

<div>
<button id="btnConvert">Update Data</button>
</div>
<table id="v12">
<thead>
<tr>
<th>ID</th>
<th>Data</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>some data</td>
</tr>
<tr>
<td>2</td>
<td>some data2</td>
</tr>
<tr>
<td>3</td>
<td>some data3</td>
</tr>
[...]
</tbody>
</table>

JavaScript

$(document).ready(function() {
$('#btnConvert').click(function() {
var tableData = JSON.stringify(makeJsonFromTable('v12'));
$.ajax({
type: 'POST',
url: 'receiver.pl',
data: {
r: tableData
},
success: function(data, textStatus, jqXHR) {
alert('string saved to file');
console.log(tableData);
},
dataType: 'json'
});
});
});

将表格转换为 JSON

var makeJsonFromTable=function(a){
var b=$("#"+a),c=$(b).find("thead"),d=$(b).find("tbody"),e=$(b).find("tbody>tr").length,f=[],g=[];
$.each($(c).find("tr>th"),function(a,b){f.push($(b).text())}),$.each($(d).find("tr"),function(a,b){for(var c={},d=0;d<f.length;d++)c[f[d]]=$(this).find("td").eq(d).text();g.push(c)});
var h={};return h.count=e,h.value=g,h
};

Perl

#!/usr/bin/perl

use strict;
use warnings;
use CGI qw(-debug);
use JSON;
use Data::Dumper;
use CGI::Carp 'fatalsToBrowser';

my $cgi = CGI->new;
print $cgi->header('application/json;charset=UTF-8');
my $string = $cgi->param('r');
print $string;
open (FILE, ">", "text.txt") || die "Could not open: $!";
print FILE $string;
close FILE;

浏览器端,我可以看到数据正在 Params 中传递(在浏览器开发人员工具中看到),但似乎 receiver.pl 似乎没有获取数据。

这里的问题可能是什么?

编辑

当从命令行运行receiver.pl时,数据被解析:

# QUERY_STRING="r={dasdsa}" ./receiver.pl 
Content-Type: application/json;charset=UTF-8

{dasdsa}

最佳答案

所以,我的问题是 Apache 缺少 CGI 执行处理程序...必须添加

<Files ~ "\.(pl|cgi)$">
SetHandler perl-script
PerlResponseHandler ModPerl::PerlRun
Options +ExecCGI
PerlSendHeader On
</Files>

关于javascript - Ajax 调用 perl 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57823315/

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