|
Autor |
js fetch anwenden |
|
Goswin
Senior  Dabei seit: 18.09.2008 Mitteilungen: 1747
Wohnort: Chile, Ulm
 | Themenstart: 2022-05-28
|
Ich versuche, mit "fetch" Daten vom Client an den Server zu senden, was bei mir aber noch *nie* funktioniert hat. Was mache ich bei der folgenden Vorgehensweise falsch, bzw was fehlt mir?
\sourceon javascript
\numberson
\sourceoff
\sourceon php
\numberson
\sourceoff
Manchmal ist gar keine Datei "fortschritt.js" auf dem Server, oder aber sie enthält die Daten nicht.
|
Profil
|
Triceratops
Aktiv  Dabei seit: 28.04.2016 Mitteilungen: 6372
Wohnort: Nordamerika
 | Beitrag No.1, eingetragen 2022-05-28
|
Du führst doch die Funktion "sende_Fortschritt" nirgendwo aus. Und in deiner php-Datei liest du die JavaScript-Datei nur als Text ein.
Du kannst in deiner php-Datei (und natürlich auch in einer HTML-Datei) einfach den script-Tag einbetten. Du musst keine separate Datei auslesen. Ergänze dann die folgende Zeile am Ende des Skriptes.
sende_Fortschritt(data);
Was noch zu beachten ist: fetch ist eine asynchrone Funktion. Wenn du wirklich nicht mehr machen willst als in deinem Codebeispiel, muss das wohl nicht weiter beachtet werden. Ansonsten würde ich dir aber stark empfehlen, "sende_Fortschritt" zu einer asynchronen Funktion zu machen, den fetch-Befehl mit await zu versehen und auch den Funktionsaufruf oben.
https://javascript.info/async-await
https://javascript.info/fetch
|
Profil
|
Goswin
Senior  Dabei seit: 18.09.2008 Mitteilungen: 1747
Wohnort: Chile, Ulm
 | Beitrag No.2, vom Themenstarter, eingetragen 2022-05-28
|
Hallo Triceratops,
Ich weiß deine wohlgesinnten Anmerkungen sehr zu schätzen. Aber leider helfen sie mir nicht weiter.
Die obigen Codesnippets beziehen sich nur auf die Teile meines Codes, die ich nicht verstehe. Der script-Tag war schon immer in meine html-Datei eingebettet, und natürlich wird die Funktion sende_Fortschritt dort öfters aufgerufen.
Es geht also wohl um die restlichen Anmerkungen, die für mein Verständnis leider zu hoch sind. Mir ist völlig egal, wann "sende_Fortschritt" ausgeführt wird, solange es nur irgendwann (innerhalb der nächsten Viertelstunde) ausgeführt wird, und solange die Anweisungen *innerhalb der Funktion* der Reihenfolge nach ausgeführt werden. Wo ist da ein Problem?
Wobei mich schon der Name "fetch" misstrauisch macht: es wird damit angedeutet, dass man sich etwas vom Server *holen* möchte, wobei ich doch gar nichts holen, sondern dort etwas *ablegen* will.
Was "await" macht und wie es angewendet wird habe ich noch nicht verstanden. Überhaupt habe hatte ich keine halbwegs vollständige Benutzeranleitung für fetch gefunden; nur die ständigen Kommentare, dass es "besser als ajax" sein soll.
|
Profil
|
zippy
Senior  Dabei seit: 24.10.2018 Mitteilungen: 3960
 | Beitrag No.3, eingetragen 2022-05-28
|
\quoteon(2022-05-28 02:11 - Goswin in Beitrag No. 2)
Wobei mich schon der Name "fetch" misstrauisch macht: es wird damit angedeutet, dass man sich etwas vom Server *holen* möchte, wobei ich doch gar nichts holen, sondern dort etwas *ablegen* will.
\quoteoff
HTTP basiert auf einem Request/Response-Ping-Pong: Der Client sendet einen Request an den Server und der Server antwortet mit einer Response. Fetch spielt hierbei mit. Es sendet einen Request mit gegebenen Parametern an eine gegegebe URL und liefert als Ergebnis die Response.
Nicht nur das Lesen von Daten vom Server, sondern auch das Senden von Daten an den Server ist ein Request, nämlich typischerweise (wie in deinem Code im Startbeitrag) ein Request mit der Methode POST. Du findest Hinweise hierzu (etwa diesen), indem du nach javascript fetch post googelst.
\quoteon(2022-05-28 02:11 - Goswin in Beitrag No. 2)
Überhaupt habe ich keine halbwegs vollständige Benutzeranleitung für fetch gefunden
\quoteoff
Was spricht denn gegen Triceratops' Link?
--zippy
|
Profil
|
Triceratops
Aktiv  Dabei seit: 28.04.2016 Mitteilungen: 6372
Wohnort: Nordamerika
 | Beitrag No.4, eingetragen 2022-05-28
|
\quoteon(2022-05-28 02:11 - Goswin in Beitrag No. 2)
Ich weiß deine wohlgesinnten Anmerkungen sehr zu schätzen. Aber leider helfen sie mir nicht weiter. [...] Die obigen Codesnippets beziehen sich nur auf die Teile meines Codes, die ich nicht verstehe. Der script-Tag war schon immer in meine html-Datei eingebettet, und natürlich wird die Funktion sende_Fortschritt dort öfters aufgerufen.
\quoteoff
Poste dann bitte ein Minimalbeispiel, also den vollständigen Code aller relevanten Dateien minus das, was für die Frage nicht relevant ist (der Funktionsaufruf ist relevant).
|
Profil
|
Goswin
Senior  Dabei seit: 18.09.2008 Mitteilungen: 1747
Wohnort: Chile, Ulm
 | Beitrag No.5, vom Themenstarter, eingetragen 2022-05-28
|
Vielen Dank, zippy & Triceratops!
Der Fehler ist gefunden, und war eigentlich auch im Startbeitrag sichtbar: der für mich seltsame Ausdruck 'php://input' ist ein Dateiname und muss dann natürlich in Anführungsstrichen stehen.
Also ein Syntaxfehler, der aber nicht angezeigt wird, solange die Datei auf dem Server läuft. Bis mir jemand den trickreichen Rat gab, diese Datei doch auf meinem Rechner laufen zu lassen. Ergebnisse sind dann zwar unbrauchbar, aber Syntaxfehler werden angezeigt.
|
Profil
|
Goswin hat die Antworten auf ihre/seine Frage gesehen. Goswin hat selbst das Ok-Häkchen gesetzt. |
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2022 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|