Ich versuche, eine Antwortdaten von einem Perl-CGI-Skript zurück zu bekommen:Javascript holen: nicht POST-Antwortdaten von Perl-Skript erhalten
Ich habe den folgenden JavaScript-Code:
fetch('/test.pl', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: this.state.msgName,
email: this.state.msgEmail
})
})
.then((response) => {
console.log("been here");
console.log(response);
})
.then((responseData) => {
console.log("been here 2");
console.log(responseData);
})
.then((data) => {
console.log("been here 3");
console.log(data);
})
.catch((error) => {
console.log("Failed!", error)
});
und der perl-Skript:
#/usr/bin/env perl
use strict;
use CGI;
use JSON;
my $q = new CGI;
my $json = new JSON;
if ($q->param)
{
print $q->header();
my $hash = $json->decode($q->param('POSTDATA'));
print $q->header('application/json');
my $msg = [ sprintf "data from %s received ok", $hash->{name} ];
print $json->encode($msg);
}
aber ich bin nur das bekommen (ich verwende Chrome Web Developer tools) und keine Daten:
been here
Response {type: "basic", url: "http://localhost/test.pl", status: 200, ok: true, statusText: "OK"…}
been here 2
undefined
been here 3
undefined
Ich bin sicher, dass der Perl-Skript funktioniert ok, hier ist die Ausgabe, die es von der Kommandozeile zu testen:
# curl -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"name":"uvw","email":"xyz"}' http://localhost/test.pl
Content-Type: application/json; charset=ISO-8859-1
["data from uvw received ok"]%
Wer weiß, wie die Daten Antwort zurück an dem js Skript zu bekommen? Vielen Dank im Voraus für jede Hilfe!
Ok, das tun, was Sie sagen, ich habe nicht mehr ‚undefined‘, aber ich noch nicht bekommen, die Antwortdaten aus dem Perl-Skript – tvs
Sind CGI-Skript funktioniert? Sie haben ein 'Antwort'-Objekt, entsprechend Ihren eigenen Logs – slezica
Ja, ich habe über die Befehlszeile mit curl getestet und gibt die Daten korrekt zurück (siehe was ich am Ende meines Postings geschrieben habe) – tvs