xmlHTTPRequest - mehrere ids - ungleiche daten

Dorsch

Mitglied
Hallo,

Ich versuche mich mal so präzise wie möglich auszudrücken.

Ich beschäftige mich jetzt schon seit einiger Zeit mit Javascript und PHP, um letztlich kleine Webanwendungen zu programmieren.
Vorkenntnisse habe ich mit Java erworben.

Wie ich mich so in XMLhttpRequest eingelesen habe, musste ich feststellen, dass dieses Verfahren hauptsächllich eine Datenportion transportiert, es sei denn mehrere Daten für die gleiche ID.
Meine Vorstellung allerdings wäre, wenn ich einen bestimmten Button (in html) drücke, dieser über PHP sich selbst ändert UND einen bestimmten Text (ebenfalls mit einer ID) ändert.

Jetzt habe ich einfach für den Button eine Funktion geschrieben, die für den Button sowie für den Text Daten an PHP sendet und empfängt.
Um gleichzeitig beide IDs mit ihren dazugehörigen Daten zu senden/empfangen, habe ich von XMLhttpRequest zwei Objekte erzeugt.
Dies funktioniert auch einwandfrei:
HTML:
    <script>
        function Start(butt,text){
            var xhttp = new XMLHttpRequest();
            var yhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function(){
                if (this.readyState == 4 && this.status == 200){
                
                    document.getElementById("many").innerHTML = xhttp.responseText;
                
                                
                                
                }
            }
            yhttp.onreadystatechange = function(){
                if (this.readyState == 4 && this.status == 200){
                    document.getElementById("speak").innerHTML = yhttp.responseText;
                }        
            }
            xhttp.open("GET", "testtest.php?p="+butt, true);
            xhttp.send();
            yhttp.open("GET", "testest.php?p="+text, true);
            yhttp.send();
        }
    </script>
Im Hauptteil von der PHP-Seite ist eine if-Verzweigung, die erst xhttp zulässt und dann yhttp:
PHP:
    $p = $_REQUEST["p"];
    $h = new Hallo();
 
    if ($p == "ok"){
        $h->sayChooses();    //Hier werden die Buttons geändert
    }else if($p == "ook"){
    $h->sayStart();              //Hier wird der Text geändert
    }
Beim weiteren Überlegen und Ausprobieren habe ich feststellen müssen, dass wenn ich noch mehr IDs hätte, die Start()-Funktion mehr und mehr ausgedehnt würde und auf der PHP-Seite die If-Verzweigung komplexer wird.
So habe ich also Überlegt, ob ich die Start()-Funktion nicht irgendwie automatisieren könnte, um das ganze nicht noch weiter ausdehnen zu müssen und ggf. die PHP-Seite in Grenzen halten kann.

Dabei habe ich mir bis jetzt dieses ausgedacht:
(Was aber nicht funktioniert)
HTML:
<script>
        function Start(butt,text){
            var xhttp = new XMLHttpRequest();
            var aktuelleId = null;          
            var timer = 0;
            var array = [butt, text];
        
            for(var i=2; timer < i; timer++){
                xhttp.open("GET", "testest.php?p="+array[timer], true);
                xhttp.send();
                
            
                if (timer == 0){
                    aktuelleId = "many";
                }else if (timer == 1){
                    aktuelleId = "speak";
                }
 
                xhttp.onreadystatechange = function(){

                    if (this.readyState == 4 && this.status == 200){
                
                        document.getElementById(aktuelleId).innerHTML = xhttp.responseText;
            
                            
                    }
                }
                    

            }

        }
Der Text wird korrekt verändert, aber die Button(s) verändern sich nicht.
Wenn ihr meinen Fehler findet, wäre ich sehr dankbar.
Auch ein einfacherer Weg wäre super, wenn es ihn gäbe. :)

Übrigens habe ich auch was von JQuery gelesen, möchte aber ohne auskommen.
 
Zuletzt bearbeitet:

olfibits

Aktives Mitglied
Hallo!
Falls du noch Hilfe brauchst: Ich denke, das ist ein relativ trivialer Tippfehler. :)
In deinem ersten HTML-Codeblock steht ja im <script>-Tag einmal "testtest.php" und einmal "testest.php".
Einfach abändern, dann sollte es funktionieren ;)

LG
Florian
 

Ähnliche Java Themen

Neue Themen


Oben