Übergabe von einem Dropdownfeld in ein Inputfeld

Wahrscheinlich hängst du zu sehr an dem Konzept der Formulare, wo man die Seite neu laden muss, um Daten vom Server zu holen. Das ist bei Ajax nicht erforderlich. Dein onchange müsste etwa so aussehen:
Code:
<select name="kategorie" onChange="holeUnterkategorie(this);" >
<option value="">bitte wählen</option>
<option value="Schilder (individuell)">Schilder (individuell)</option>
<option value="kategorie">kategorie</option>
</select>
<script>
    function holeUnterkategorie(ele) {
        var val = ele.options[ele.selectedIndex].value;
        $.ajax({
            url: "holeunterkategorie.php",
            data: {option: val},
            type: "GET",
            dataType : "text"
        })
        .done(function(data) {
            $("#unterkategorie").html(data);
        })
    }
</script>
 
Code:
<script>
    function holeUnterkategorie(ele) {
        var val = ele.options[ele.selectedIndex].value;
        $.ajax({
///bis hier hin klar
            url: "holeunterkategorie.php", 
///brauch ich jetzt eine extra PHP??? Und was soll darin enthalten sein?
            data: {option: val},
            type: "GET",
            dataType : "text"
        })
        .done(function(data) {
            $("#unterkategorie").html(data); 
///warum jetzt eine HTML??? Auch hier die Frage, was tut diese Datei?
        })
    }
</script>

Ich bin nämlich kein Fan davon die Sachen bis ins kleinste auf verschiedene Dateien zu splitten. Nein, ich hänge nicht an dem Konzept von den Formularen. Ich versuche nur mich irgendwie zurecht zu finden in PHP und HTML. Javascript war quasi nur ein notwendiges Übel. Wobei ich da schon einiges drin geschafft hab. Und nun kommt der nächste "Kram" dazu. Ich kann ja PHP, HTML usw. nicht richtig.

Und wenn ich dann so einen Codeschnipsel zum Beispiel dann irgendwo finde, dann gehts in meinem Hirn los.
Ok, wieviele Dateien benötige ich, warum und dann hör ich auf. Ich kann zwar schon ziemlich um die Ecke denken, aber da fehlt mir dann das Verständnis. Für mich sieht das im Moment so aus, als wöllte ich mit 4 Leuten von Köln nach Hamburg fahren, und nehme dafür 5 Autos mit. :cool:
 
Code:
<script>
    function holeUnterkategorie(ele) {
        var val = ele.options[ele.selectedIndex].value;
        $.ajax({
///bis hier hin klar
            url: "holeunterkategorie.php",
///brauch ich jetzt eine extra PHP??? Und was soll darin enthalten sein?
// Ja, brauchst Du. Dieses Skript muss die options für die Unterkategorie aus der Datenbank holen und den
// HTML-Text mit den Options per echo zurück geben. In dieser PHP-Datei ist der GET-Parameter "option"
// verfügbar.
            data: {option: val},
            type: "GET",
            dataType : "text"
        })
        .done(function(data) {
            $("#unterkategorie").html(data);
///warum jetzt eine HTML??? Auch hier die Frage, was tut diese Datei?
// Dieses html() ist ja keine Datei sondern ein jQuery-Funktion. data enthält die Daten, die vom PHP-Skript
// ausgegeben wurden und die Funktion fügt diesen Text als innerHTML in das select #unterkategorie ein.
        })
    }
</script>
Wenn Du vermeiden möchtest, viele kleine Dateien zu haben, kannst Du so etwas wie "modus" als weiteren Parameter senden und abhängig davon verschiedene Daten mit einem PHP-Skript generieren:
Code:
data: {modus: "unterkategorie1", option: val},
Mit dieser Rechnungsverwaltung hast Du etwas relativ komplexes angefangen, was relativ viel Wissen erfordert. Aber wenn Du dich mit Formularen vertraut machen konntest, müsstest Du auch in der Lage sein, in Ajax einzusteigen.
 
Ich danke dir für deine Hilfe, aber im Moment blick ich da echt nicht durch. Habe aber auch mal wieder 6 verschiedene Dinge im Kopf (und das ist hier quasi nur so ein kleines).

In Flash fand ich das irgendwie einfacher. Aber leider wird Flash ja immer weiter weg gedrängt und wir können aus Flash nicht mehr drucken. Das war ja einer der Gründe, warum die Rechnungsverwaltung von Flash in HTML muss.

Ich guck mir das die Tage mal genauer an. Heute echt keinen Kopf mehr dafür.

PS: Denn mein CSS macht heute auch nicht was es soll. Daher hab ich heute etwas Pudding in meinem Kopf.
 
PS: Inzwischen ist mir eingefallen, dass man die Werte u. U. auch in Sessionvariablen übertragen könnte. Informiere dich mal darüber und teste es.
 
Also, ich habs jetzt mit Ajax oder Session noch nicht versucht.
Ich hab jetzt noch ein paar kleine Verständnisfragen.
Warum stört es Javascript so sehr, das die Seite neu geladen wird? Es wird doch am Schluß alles in die Inputfelder eingetragen. Das müsste doch machbar sein, die Daten von da zu nehmen...Egal wie oft die Seite vorher geladen wurde...
Also für mein Verständnis, müsste ich doch nur der Close-Funktion die Daten mitgeben..

Das mit der Rechnungsverwaltung, ja, wie gesagt, die haben wir bisher in Flash gehabt. Auch selbst zusammen gescripted. Da war es definitiv einfacher sich mal eine Variable für die spätere Verwendung zu "speichern".

Das nächste Problem das mich tierisch nervt, ist das sämtliche PDF Erstellungstools mit PHP7 wohl sehr große Probleme haben. Die Examples/Tutorials klappen noch, aber wenn man die selbst testen möchte, jagt eine Fehlermeldung die nächste.
 
Warum stört es Javascript so sehr, das die Seite neu geladen wird?
Hab mir nicht alles durchgelesen, aber es geht drum, dass normale JS-Variablen nach Neuladen weg sind, oder?

Gegenfrage: Wie könnte man es sinnvoll anders machen?
...
Problem 1 ist, dass der Browser für jede Url, die je besucht wurde, den gesamten internen Zustand (HTML-DOM, JS-Engine, usw.) für alle Ewigkeit speichern müsste. Dürfte auf Dauer etwas viel werden. (Warum DOM? Weil sämtliche Inhalte drin durch JS veränderbar sind).

Problem 2: EIn wirkliches hartes Neuladen wird dadurch unmöglich. Für einfache Sachen, wie zB. hier nachschauen ob es eine neue Antwort im Thread gibt, könnte man ja sowas wie ein reloadHandler in JS machen, das vom Browser dann aufgerufen wird, per Ajax die neuen Daten holt, und einfügt (etwas in die Richtung gibt es sogar schon, aber von den Browsern noch nicht wirklich unterstützt). Aber was ist, wenn sich zB. der JS-Code am Server ändert? Selbst-ändern kann sich laufender JS-Code nicht, und wenn sich die Variablenliste ändert kann man es nicht zusammenführen. usw.usw.

Problem 3: Je nach Anwendungsfall kann es nötig sein, dass das JS weiter läuft, solang es seinen Zustand hat

usw.usw.
Letztendlich ist es einfach ein Grundprinzip im WWW, dass Schließen+Öffnen bzw. Reload ein Reset ist.
 
Warum stört es Javascript so sehr, das die Seite neu geladen wird? Es wird doch am Schluß alles in die Inputfelder eingetragen. Das müsste doch machbar sein, die Daten von da zu nehmen...Egal wie oft die Seite vorher geladen wurde...
Wir haben so einen Eventlistener für die mit window.open geöffnete Seite registriert:
Code:
                popup.addEventListener("beforeunload", function () {
                    var menge = this.document.getElementById("menge").value;
                    var artikelnummer = this.document.getElementById("artikelnummer").value;
                    var artikel = this.document.getElementById("artikel").value;
                    var einzelpreis = this.document.getElementById("einzelpreis").value;
                    document.getElementById("menge").value = menge;
                    // usw.
                });
Hier ist popup die neu geöffnete Seite und für diese wurde der Listener registriert. Wird diese Seite nun durch das Neuladen geschlossen, wird das object popup zusammen mit dem Listener zerstört. Weil die neue Seite ein ganz anderes Objekt ist, das keinen Listener hat, hat man keine Möglichkeit mehr, die Daten von den Popupseite in die Hauptseite zu transportieren. Übrigens: Wird die erste Popup-Seite durch Neuladen geschlossen, so triggert das beforeunload-Event, aber das nützt uns natürlich nichts, weil die Daten dann noch nicht vollständig sind.
Eine Möglichkeit, Daten von einer Seite in eine andere zu bringen, sind die Session-Variablen, die ich früher erwähnt habe. Ich würde die Lösung vorziehen, das Neuladen durch Verwendung von Ajax zu verhindern, aber das nur, weil ich mit Javascript besser als mit PHP vertraut bin. Bei dir ist es anscheinend umgekehrt.
 

Neue Beiträge

Zurück