Я использую угловые 1.5.7 и perl 5.16.2. У меня нет возможности использовать внешние библиотеки или инструменты переключения - я застрял, просто используя то, что включено в эти два.
Угловой контроллер выполняет вызовы в файл perl. Я могу успешно выполнить POST-запросы, и мои запросы GET возвращают статус 200, но не показывают данные, которые я ожидаю увидеть. Сейчас я просто работаю с простым примером, чтобы попытаться сузиться там, где все идет не так, и я думаю, что просто не знаю формата для возврата значений из файла perl.
Мой метод GET контроллера выглядит так:
$http({
method : "GET",
url : "filename.pl",
params:{}
}).then(function successCallback(response) {
console.log(response.records);
}, function errorCallback(response) {
console.log(response);
});
и код perl, вызываемый в filename.pl, это:
my $string = q{{"records":{"2":{"City":"MÃxico D.F.","Country":"Mexico","Name":"Ana Trujillo Emparedados y helados"},"1":{"Name":"Alfreds Futterkiste","Country":"Germany","City":"Berlin"}}}};
return $string;
Строка - это просто фиктивная переменная, чтобы увидеть, работает ли работа над передачей - это не будут окончательные данные. Я подтвердил, что это действительно JSON. Вот как выглядит ответ с сервера:
{"data":"","status":200,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"url":"glwizardutils.esp","params":{"FUNCTION":"initcheckboxes","CONTEXTID":"432"},"headers":{"Accept":"application/json, text/plain, */*"}},"statusText":"OK"}
Поле данных полностью пустое, и поле ответа не работает вообще. Я могу проверить, что он ударил файл perl - как я уже сказал, POST-запросы работают нормально, и я включил некоторые распечатки, которые проверяют его правильным методом, но он просто ничего не возвращает. Что я должен здесь делать, чтобы заставить это работать?
Если filename.pl
вызывается с HTTP, тогда он должен писать HTTP-ответ на стандартный вывод. Минимум:
print "HTTP/1.1 200 OK\n";
print "Content-type: application/json\n";
print "\n";
my $string = q{{"records":{"2":{"City":"MÃxico ..."}}}};
print $string;
В Perl и практически на любом другом языке существует несколько фреймворков и модулей для обработки повторяющихся аспектов написания правильного ответа, который вы хотите изучить, поскольку ваш скрипт на стороне сервера Perl становится более требовательным.