Я делаю небольшой проект, который использует jQuery, AJAX, JSON и Perl. На бэкэнд я использую Perl и его модуль CGI, чтобы вернуть JSON ojbect.Почему я не могу вернуть объект json из Perl-скрипта?
#!/usr/software/bin/perl5.8.8
use strict;
use warnings;
use CGI qw(:standard);
use JSON;
print header('application/json');
my $json;
# eventually the json that will be returned will based on params,
# for now using this list as example.
$json->{"entries"} = [qw(green blue yellow red pink)];
my $json_text = to_json($json);
print $json_text;
Я был в состоянии написать выше сценарий, с помощью How can I send a JSON response from a Perl CGI program?
Этот скрипт вызывается с помощью GET JQuery в:
jQuery.getJSON("script.pl?something=whatever", function(data, status) {
console.log(data);
console.log(status);
},"json").error(function(jqXhr, textStatus, error) {
/* I am always ending up here. */
console.log(jqXhr);
console.log("ERROR: " + textStatus + ", " + error);
});
Из сказанного выше JQuery вызов, я ожидал вернуть объект JSON, но вместо этого я получаю весь скрипт Perl. Я знаю, что мой тип содержимого установлен правильно, потому что я получаю это назад, когда я выполнить скрипт из командной строки:
Content-Type: application/json
Может кто-то пожалуйста, помогите мне понять это. Спасибо.
Это проблема конфигурации с вашим веб-сервером. Он должен быть настроен для запуска вашего Perl-скрипта как CGI. Какой сервер вы используете? – friedo
Как совет, вы должны сначала протестировать службы JSON, напрямую обратившись к URL-адресу из браузера, прежде чем использовать их в вызовах AJAX. Жизнь (или, по крайней мере, отладка) проще: – DVK