getParameter() liefert null

Bitte aktiviere JavaScript!
Hallo,

ich habe ein Formular und wenn ich es abschicke, bekomme ich so den Wert:

Java:
System.out.println(req.getParameter("username"));
Ohni Ajax funktioniert das bestens aber mit der Fetch API ist die Ausgabe null.

Javascript:
const log = console.log.bind(console);

document.getElementById('login').addEventListener('submit', (e) => {
    e.preventDefault();

    const loginData = new FormData();

    fetch('login', {
        method: 'POST',
        body: { username: 'test' }
    })
    .then((response) => {
        return response;
    })
    .then((data) => {
        log(data);
    })
    .catch(err => {
        console.error(err);
    })
});
Funktioniert das vielleicht deshalb nicht, weil es kein Array ist, sondern ein Objekt?

Ich habe es auch so probiert:
Java:
req.getParameterMap().entrySet().stream().map(e -> e.getKey() + " -> " + Arrays.toString(e.getValue())).forEach(System.out::println);
Der gibt mir gar nichts zurück.
 
Probier mal:
Javascript:
    const loginData = new FormData();

    loginData.append("username", "test");

    fetch('login', {
        method: 'POST',
        body: loginData
    })
    ...
 
Ja, sehe gerade, dass FormData immer als multipart/form-data versendet wird, während der Standard bei HTML-Formularen application/x-www-form-urlencoded ist. Du hast also zwei Möglichkeiten: in neueren Browsern sollte es funktionieren, wenn Du statt FormData URLSearchParams verwendest (oder Du kodierst es eben selbst entsprechend) oder Dein Servlet arbeitet mit Multipart-Daten (getParts() usw.)
 
Also ich habs jetzt grad mit System.out.println(req.getPart("username")); probiert. Gibt mir auch null aber das mit dem URLSearchParams klappt bestens. Danke für den Hinweis! :)
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben