HTML Werteübergabe mittels der URL - Zwecke der Ssntaxparameter

cumulonimbus8

Fleet Admiral
Registriert
Apr. 2012
Beiträge
18.381
Hallo!

Ich verstehe einen bestimmten Teil der Syntax nicht. Googel liefert viele Treffer, aber keine Erklärung die ich suche. Gegeben sei eine URL:
http://www.meineseite.de/htmldatei.html?dasunbakennte=dieuebergabe

Mit JS kann ich mir innerhalb meiner HTML-Datei die ganze URL abholen,
var UrlParameter = window.location.search;
damit komme ich an mein Ziel.

In welchen Konstellationen hat dasunbekannte eine bestimmte Funktion?

Man kann ja schließlich mehrere Werte übergeben…
http://www.meineseite.de/htmldatei.html?eins=kreuz&zwei=pil&drei=herz&vier=karo
Was lässt sich wie mit eins, zwei, drei, vier als solchen anstellen? Ich könnte mir vorstellen, allein vier zu übergeben und das dann eckstein zu nennen. Damit mag sich im Aufgerufenen anderes tun als wenn ich für allein eins mit treff mitgebe.

CN8
 
dasunbekannte ist schlicht ein Variablenname, dieuebergabe ist ein Variableninhalt. Nicht mehr, nicht weniger.
 
cumulonimbus8 schrieb:
http://www.meineseite.de/htmldatei.html?eins=kreuz&zwei=pil&drei=herz&vier=karo
Was lässt sich wie mit eins, zwei, drei, vier als solchen anstellen? Ich könnte mir vorstellen, allein vier zu übergeben und das dann eckstein zu nennen. Damit mag sich im Aufgerufenen anderes tun als wenn ich für allein eins mit treff mitgebe.

Was du mit den übergebenen Werten der Variablen anstellst und welche Variablen und Werte übergeben werden ist dir überlassen.
 
Wenn es Variablen sind - wie und mit was kann ich sie einsetzen?

Das war meine Frage. Der Zweck der Parameter, ihre Anwendung, nicht was diese sind (so weit zu raten war einfach).

CN8
 
Zum Beispiel zum Übergeben von Werten aus HTML Formularen wird dies genutzt, sagen wir z.B. für ein Registrierformular oder Newsletter was auch immer.

Da befinden wir uns auch nicht mehr im Bereich HTML sondern PHP.
 
Das geht auch in Richtung meiner Vermutungen.

Einer URL von mir aus 3 Variablen mitgeben und im Code (HTML) dann diese Variablen (neben anderen) explizit auswerten - das geht nicht:
…eins=7&drei=5&vier=2
was im Code vorhandene Variablen eins bis sechs gezielt füllt - ohne die komplett-URL mittels Stringkarobatik und IFs in z.B. JS auszuwerten.

Damit hat sich der Fall erledigt, der Variablenname nach dem ? ist, was meine Aufgabe anlangt, effektiv nur ein Dummy.

CN8
 
Mit JQuery gibts für GET z.bsp. den url Parser mit jQuery.url().param('NameDerInDerURLVerwendetenGETVariable').

Mit PHP lässt sich das ganz einfach per $_GET['VariablenName'] holen. Als sehr vereinfachtes Beispiel deineseite.de/index.php?variable1=50&variable2=25
Code:
<?php
$zahl1 = $_GET['variable1']; //50
$zahl2 = $_GET['variable2']; //25

echo $zahl1 + $zahl2;
?>
Jetzt steht auf der Seite nichts ausser der Zahl 75.
 
Es geht um HTML, nicht um PHP (das nicht zur Verfügung steht). Wäre ja auch zu einfach.

Natürlich geht das; du kannst jeden Parameter einzeln ansprechen und auch einen individuellen Wert zuweisen.
Wie geht es?

Wenn ich als Vergleich eine herkömmliche EXE nahem kann ich ihr mit Schaltern bestimme Anweisungen übergeben wobei ich die Wahlfreiheit habe auszusuchen welche und in welcher Reihenfolge.
Also müsste ich einer HTML die für 6 Variablen vorbereitet ist beliebig viele in beliebiger Folge übergeben können. Daran hege ich mal zweifel…

CN8
 
Bin ich der einzige, der OPs Ausführungen nicht 100% durchblickt?

Du kannst dir die Variablen aus der URL mit JQuery holen, dafür brauchst du kein PHP. Die Anzahl und Reihenfolge in der sie in der URL auftauchen ist dabei vollkommen egal, denn JQuery sucht sie nach dem Namen den du den Variablen gegeben hast.
 
Also ich hab den ganzen Thread jetzt drei Mal gelesen und komm leider auch nicht mit. Eventuell wäre es hilfreich, wenn du etwas konkreter werden könntest mit deinen Beispielen cumulonimbus8. Dir scheint doch etwas ganz konkretes vorzuschweben.
 
Die Beispiele sollen pauschal sein, absichtlich.

Aber bitte. Rahmenbedigung ist HTML, nicht PHP oder Ähnliches. Die beschriebene URL folgt einer gültigen Syntax. Frage also: welche Aufgabe erfüllt «dasunbekannte», welchem Zweck dient es, wie kann ich Nutzen daraus ziehen?

Offenbar kann HTML selbst weder die »Variable« auswerten noch den ihr zugewiesenen »Wert«. Noch kann JS solchen über eine native Funktion (zumindest wüsste ich nicht .spilt hierzu direkt anzustrengen).

Wenn aber das (die) ursprüngliche HTML (mir ist klar, das ist eben eine Beschreibungs- und eine Programmiersprache), was ja das Endziel für HTTP sein sollte, so eine URL-Syntax akzeptiert aber nicht verwenden kann frage ich mich nach dem tieferen Sinn dessen. Oder kam diese Syntax später und es wurde definiert, dass HTML (mittels Browser) schlicht die Beigaben ignoriert?

Einfach gesagt: wenn etwas da ist würde ich das auch gerne zu meinem Vorteil nutzen. Es ist wie mit herumliegenden Geräten - die kann ich einfach nicht unbeschäftigt lassen…

CN8
 
cumulonimbus8 schrieb:
Wenn aber das (die) ursprüngliche HTML (mir ist klar, das ist eben eine Beschreibungs- und eine Programmiersprache), was ja das Endziel für HTTP sein sollte, so eine URL-Syntax akzeptiert aber nicht verwenden kann frage ich mich nach dem tieferen Sinn dessen. Oder kam diese Syntax später und es wurde definiert, dass HTML (mittels Browser) schlicht die Beigaben ignoriert?

Du sagst es doch selbst schon. HTML hat gar keine Ahnung von überhaupt irgend etwas, und das soll es auch nicht (außer Markup bereitzustellen, und das muss nicht über HTTP sein, kann auch über jedes andere Protokoll erfolgen oder auch überhaupt keines - wenn du beispielsweise eine HTML-Datei lokal öffnest).

Mal ein paar Anhaltspunkte:

  • Das hier hat wie gesagt gar nichts mit HTML zu tun, nur mit zwei Spezifikationen: URI und HTTP.
  • Die URI-Spezifikation legt fest, dass du am Ende, nach einem "?", so genannte Query-Parameter anhängen kannst. Das funktioniert mit jedem URI-Schema, nicht nur HTTP oder anderen webbezogenen Sachen.
  • Die HTTP-Spezifikation besagt, dass eine URI im HTTP-Schema (also http://...) genutzt werden muss, um über HTTP Ressourcen (Seiten, Dateien...) zu adressieren.
  • Mit manchen HTTP-Methoden wie GET oder HEAD kannst du nun den Query-Teil einer HTTP-Schema-URI verwenden, um zusätzliche Parameter an einen Request anzuhängen - merke: an einen HTTP-Request, der von einem Server verarbeitet wird und die Parameter dann auslesen kann. Beispiel: https://www.google.de/?q=Suchbegriff liefert dir direkt die Suchergebnisse zu "Suchbegriff".
  • HTML kann damit nichts anfangen, Javascript nur bedingt (man könnte die Parameter auslesen und dann etwas mehr oder minder sinnvolles damit machen, aber naja...). In erster Linie ist das für den Server gedacht, der die Parameter im Kontext des HTTP-Protokolls auswertet.

edit:

Achso, vielleicht kommt daher deine Verwirrung, du schriebst oben:

Code:
http://www.meineseite.de/htmldatei.html?eins=kreuz&zwei=pil&drei=herz&vier=karo

Nur weil die Wertpaare direkt hinter der Angabe der HTML-Datei folgen, haben diese rein gar nichts mit der Datei zu tun. Da könnte auch stehen:

Code:
http://www.meineseite.de/grafik.jpg?height=128&width=128

Da würdest du auch nicht fragen, warum der JPEG-Standard nichts mit den Parametern anfangen kann, oder?
 
Zuletzt bearbeitet:
Ich habe deine Frage mal zum Anlass genommen, ein bisschen in der Geschichte des WWW zu graben und herauszufinden, wann genau das eigentlich alles spezifiziert wurde.
Zunächst aber folgendes: Wer schon einmal auf der Kommandozeile unterwegs war, weiß vielleicht, dass man den dort aufgeführten Befehlen Variablen mitgeben kann, und zwar in der Form
Code:
programmname variable1 variable2
. Häufig sieht man auch, dass den Variablen ein Bindestrich vorangestellt wird.
Code:
programmname -variable1 -variable2
Manch einer wird vielleicht auch schon einmal Anpassungen an einem Programm vorgenommen haben, indem er die Verknüpfung hat anzeigen lassen und an den dort vorhandenen Dateipfad einen Parameter angehangen hat. Intern passiert im Computer dabei genau das gleiche: Der Parameter wird dem Programm als Variable übergeben.

Nun zurück zu vernetzten Computern:
Schon lange bevor 1990 das World Wide Web erfunden wurde, gab es (seit Ende der 60er Jahre) Bestrebungen, Computer miteinander zu vernetzen und kommunizieren zu lassen. Sinnvollerweise möchte man dabei natürlich auch entfernten Computern sagen können, dass sie etwas tun sollen und so war es naheliegend, dass auch Programme aus der Entfernung ausgeführt werden können. Dabei muss man, wer oben aufgepasst hat weiß es, den Programmnamen inklusive eventuell zu übergebener Variablen an das entfernte System übertragen. Wie das ganze in der Anfangszeit realisiert wurde weiß ich nicht, aber das Prinzip sollte klar sein.

Irgendwann kam dann das Jahr 1990 und Tim Berners-Lee erdachte das World Wide Web, als Ort um Wissen in Form von Hypertext auszutauschen, also Text der Querverweise (Hyperlinks) auf andere Texte enthalten konnte. Kommunizieren konnte man damals schon längst im Internet, z.B. über Email oder Newsgroups (den Vorläufern der heutigen Foren). Was allerdings fehlte war eine Möglichkeit, nicht alles Wissen in einem langen Beitrag unterbringen zu müssen, sondern querverweisen zu können. Platt gesagt erfand Berners-Lee damals das WWW, um etwas wie Wikipedia schaffen zu können.

Das Potential von Seiten mit Hypertext, die von überall aus abrufbar waren wurde schnell erkannt und schon bald wollte man nicht einfach nur statischen Text lesen können sondern Webseiteninhalte dynamisch generieren lassen. Dazu sollte auf Seite des Webservers ein kleines Programm angestoßen werden, was dann dynamisch, an Hand einiger Variablen, die Webseite zusammen bauen und zurück zum Client senden sollte.
Was dazu noch fehlte, war eine Möglichkeit, die Variablen an das Serverprogramm zu schicken. Genau so sind dann die von dir ursprünglich angesprochenen URL-Parameter entstanden. Man hat zwei Wege erdacht, um die Variablen zum Server zu bekommen. HTTP-GET, bei dem alle Variablen hinten an die abgerufene URL angehangen werden, und HTTP-POST, bei dem die Variablen 'unsichtbar' für den Benutzer im Datenteil der Clientanfrage übertragen werden.

Das alles ist passiert, bevor HTTP überhaupt formell standardisiert wurde (das passierte erst 1996) und so kommt es, dass schon im Standard von HTTP/1.0 GET, POST und URL-Parameter enthalten sind (genau genommen sind URL-Parameter im Standard für URL definiert, der aber etwa zeitgleich entwickelt wurde).
Die URL-Parameter waren also nie für etwas anderes gedacht, als Variablen an den Server zu schicken, der diese dann auswertet. Über die Jahre entstanden dann Möglichkeiten (und ganze Programmiersprachen), um mehr oder minder effizient mit den gebotenen Möglichkeiten umzugehen, z.B. PHP. Heutzutage ist es über eine Vielzahl von Schnittstellen möglich, die Parameter an quasi beliebige Programmiersprachen zu übergeben. Wie diese dann interpretiert werden (ob es zum Beispiel sinnvoll ist, von deinem ursprünglichen Beispiel nur eine der vier Variablen zu übergeben) ist Sache des auswertenden Programms.
Natürlich haben findige Entwickler auch Möglichkeiten gefunden, die Parameter in Javascript auszulesen. Wirklich sinnvoll ist das aber meiner Meinung nach nicht. Javascript arbeitet auf der Clientseite und kann auch anders an die Variablen kommen.
Dazu muss man sie nicht erst einmal um die halbe Welt an den Server schicken.

Wer jetzt noch nicht genug hat, kann sich mit folgenden Hyperlinks weiter informieren:
Wikipedia: HTTP (vor allem der Abschnitt 6 'Argumentübertragung')
RFC1738 (der Standard für URL; englisch)
RFC1945 (der Standard HTTP/1.0; englisch)
HTTP/0.9 (die erste verschriftlichte Version von HTTP, noch ohne irgendwelche Variablenübertragung; englisch)

Generell ist es, wie häufig im Bereich Computer(geschichte), hilfreich, wenn man der englischen Sprache mächtig ist. Dort gibt es die besten Quellen (nämlich die Originaldokumente). Wer sucht, findet aber auch viele Übersetzungen und Erklärungen auf deutsch.
 
HTML!=HTTP
HTML hat garnicht die Aufgabe, irgendetwas aus der URL auszuwerten
HTML hat die Aufgabe, bunte Seiten darzustellen
HTML wird vom Server (Hardware mit entsprechender Webserversoftware inkl. benötigter Erweiterungen) geliefert aufgrund der Informationen, welche im HTTP-Request angefragt wurden
Über eventuelle Parameter kann der Server komplett unterschiedliche Informationen im HTML zurück geben
Das HTML weiß aber nichts von irgendwelchen Parametern, muß es auch nicht - daß weiß der Server, der das entsprechend dazu passende HTML liefert.

nochmal zum unterstreichen:
HTML!=HTTP
 
Ich bin mal so frei… HTML ≠ HTTP. Man sollte das «Nicht/Ungleich» evtl. mal mit Leerzeichen abtrennen, dann erkennt mans besser.

Was das Hyper Text Transfer Protocol ist weiß ich so gut wie ich eine Hyper Text Markup Language kenne.

Falls man denn meine Frage gelesen hat, und ich nehme jetzt mal das jüngste Beispiel, https://www.google.de/?q=Suchbegriff, so wollte ich wissen was sich mit q anstellen lässt. Direkt in HTML offensichtlich nichts. Aber da war ich mir nicht sicher - vielleicht ist da irgendwas zu beachten? Just Google war da sehr schweigsam… …zu solchen »Kommandozeilenparametern«. Deswegen meine Frage hier.

CN8
 
HTML ist eine passive Auszeichnungssprache, die überhaupt gar nichts selber auswertet sondern einfach nur für die Gestaltung von Texten verwendet wird (ähnlich wie z.B. auch LaTeX). Wenn überhaupt dann könnte JavaScript verwendet werden, um auf den Parameter zuzugreifen. Wie schon angemerkt: Das geht wohl auf die ein oder andere Weise, bietet aber keine sinnvollen Vorteile gegenüber anderen Wegen, um an den User-Input zu kommen.
 
Reines HTML kann das nicht wie wir hier bereits gehört haben. Jedoch kannst du das mit nativem JavaScript lösen:

https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
https://www.creativejuiz.fr/blog/en/javascript-en/read-url-get-parameters-with-javascript

Und nun zu deinem Einsatzzweck:

Nehmen wir mal irgend eine Wetterberichtsseite.

Wenn du auf diese Seite gehst (bspw. http://Wetter.de) dann siehst du generelle Informationen oder Nachrichten. Du möchtest nun das Wetter von Berlin für morgen sehen und trägst in ein Suchfeld Berlin ein und wählst ein Datum aus und klickst auf abschicken.

Danach verändert sich die URL zu http://wetter.de/&search=Berlin&Date=24-04-2016

Bspw. per JavaScript werden auf der neuen Seite nun die Parameter ausgelesen und an ein Backend geschickt. Das Backend liefert die gesuchten Daten zurück und sie werden dir angezeigt.
 
Zurück
Oben