Я пытаюсь вызвать функцию JSON RPC через CGI с помощью perl. Но получаю следующую ошибку.
ОШИБКА: [объект Объект
Может кто-нибудь, пожалуйста, помогите мне в этом? Заранее спасибо.
Test.html
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
$.ajax({
type: "POST",
url: "cgi-bin/server.cgi",
data: '{"version": "1.1", "method": "echo", "params" : ["Hello World"]}',
processData: false,
async: false,
timeout: 30000, // msec
contentType: "application/json",
dataType: "json",
success: function(response){
$("body").append( "<br>SUCCESS: " + response.version );
$("body").append( "<br>version: " + response.version );
$("body").append( "<br>result: " + response.result );
$("body").append( "<br>OK" );
},
error: function(response){
$("body").append( "ERROR: " + response );
$("body").append( "<br>" );
}
});
});
</script>
</head>
<body>
</body>
</html>
server.cgi
[root@ip-172-31-0-164 cgi-bin]# cat server.cgi #!/usr/bin/perl
use JSON::RPC::Server::CGI;
use strict;
my $server = JSON::RPC::Server::CGI->new;
$server->dispatch('MyApp')->handle();
MyApp.pm
[root@ip-172-31-0-164 cgi-bin]# cat MyApp.pm
#!/usr/bin/perl
package MyApp;
use base qw(JSON::RPC::Procedure); # Perl 5.6 or more than
use strict;
sub echo : Public { # new version style. called by clients
# first argument is JSON::RPC::Server object.
return $_[1];
}
sub sum : Public(a:num, b:num) { # sets value into object member a, b.
my ($s, $obj) = @_;
# return a scalar value or a hashref or an arryaref.
return $obj->{a} + $obj->{b};
}
1;