我想通过 ajax 将数据发送到 Perl 脚本,并从它接收 json 格式。但这不起作用。我知道以下脚本中有问题。有谁知道如何修理它?
jQuery 代码:
$("#test").click(function(){
var ID = 100;
var data = {
data_id : ID
};
$.ajax({
type: "POST",
url: "ajax.cgi",
data: data,
success: function(msg){
window.alert(msg);
}
});
});
ajax.cgi(perl 脚本):
#!/usr/bin/perl
use CGI;
use DBI;
$cgi = CGI->new;
# Here I'd like to receive data from jQuery via ajax.
$id = $cgi->param('data_id');
$json = qq{{"ID" : "$id"}};
$cgi->header(-type => "application/json", -charset => "utf-8");
print $json;
exit;
不确定你现在是否解决了这个问题,但也许其他人偶然发现了这个问题并想知道它是如何工作的。
请找到下面的代码。如果您想运行此代码,只需将index.html 文件复制到您的html 目录(例如/var/www/html)并将perl 脚本复制到您的cgi-bin 目录(例如/var/www/cgi-bin)。确保使 perl 脚本可执行!在我下面的代码中,cgi 目录位于 /cgi-bin/ajax/stackCGI - 请相应地更改它。
我还添加了一个关于如何使用 Perl cgi、AJAX 和 JSON 的稍微更高级的示例:click还有一个关于如何使用 JSON 通过 AJAX 将数组从 Javascript 传递到 Perl 的示例:click.
索引.html
<!DOCTYPE html>
<html>
<head>
<title>Testing ajax</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#test").click(function(){
var ID = 100;
$.ajax({
type: 'POST',
url: '/cgi-bin/ajax/stackCGI/ajax.pl',
data: { 'data_id': ID },
success: function(res) {
alert("your ID is: " + res.result);
},
error: function() {alert("did not work");}
});
})
})
</script>
</head>
<body>
<button id="test" >Testing</button>
</body>
</html>
ajax.pl
#!/usr/bin/perl
use strict;
use warnings;
use JSON; #if not already installed, just run "cpan JSON"
use CGI;
my $cgi = CGI->new;
print $cgi->header('application/json;charset=UTF-8');
my $id = $cgi->param('data_id');
#convert data to JSON
my $op = JSON -> new -> utf8 -> pretty(1);
my $json = $op -> encode({
result => $id
});
print $json;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)