Path: csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Arno Welzel Newsgroups: de.comp.lang.javascript Subject: Re: HTTP POST? Date: Mon, 3 Jun 2019 00:06:34 +0200 Lines: 52 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 8bit X-Trace: individual.net 2X3UnwikXhdB0kOyzjBBiA0ib9M24Xq5XmbUlAFDQs0vBDIuXq Cancel-Lock: sha1:OlH3ITO9RIaEvOUzfzU2eYVgSxI= Openpgp: preference=signencrypt In-Reply-To: Xref: csiph.com de.comp.lang.javascript:5069 Ulli Horlacher: [...] > Ich hab vor im Bereich 1-10 GB Daten zu verschicken. > Das kann ich aber schlecht in einer Datenstruktur im RAM aufbauen, das > muss in 64 kB Bloecken verschickt werden. > > Mein Perl-Client macht das so. Das will ich nun in Javascript haben, weil > viele Leute mit Perl Code nichts anfangen koennen. > > In Javascript hab ich bisher nur rudimentaer was programmiert. > Deshalb frag ich ja hier. Das Problem ist, dass XMLHttpRequest.send() nicht mehrmals hintereinander aufgerufen werden kann, sondern nur einmal pro Anfrage. Als Beispiel wie bei gezeigt: // Neue XHR-Anfrage fuer ein HTTP POST erzeugen var xhr = new XMLHttpRequest(); xhr.open("POST", "/server", true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); // Handler fuer Statusmeldung nach Absenden der Anfrage xhr.onreadystatechange = function() { if (this.readyState === XMLHttpRequest.DONE && this.status === 200) { // Anfrage wurde erfolgreich beendet // hier entsprechende Behandlung ergaenzen } } // Anfrage mit Inhalt abschicken - das geht nur einmal nach open()! xhr.send("foo=bar&lorem=ipsum"); // Alternativen: // // xhr.send(new Int8Array()); // xhr.send(document); Wenn Du kontinuierlich einen größeren Datenstrom senden willst, wirst Du um Websockets und eine entsprechende Serverseite dazu nicht herumkommen. -- Arno Welzel https://arnowelzel.de