Willkommen bei Entwickler-Forum.
Ergebnis 1 bis 7 von 7
  1. #1
    Zaungast
    Registriert seit
    30.08.2016
    Beiträge
    21

    Standard Simpler If Vergleich funktioniert nicht, warum?

    Hey Leute,
    ich hoffe ihr könnt mir helfen. Dieser nicht funktionierende Vergleich lässt mich nur noch verzweifeln. Bin aber auch kein JavaScript Fan....

    dies funktioniert nicht:
    Code:
    		xmlhttp.onreadystatechange=function() {
    		    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    			test = xmlhttp.responseText;
    			document.getElementById("hinweis").innerHTML=test;
    			//test ="ort";
    			if (test == "ort") {
    			    alert("Diese " + txt + " Bezeichnung existiert bereits.");
    			} else if (test == "html") {
    			    alert("Dieser " + txt2 + " Link existiert bereits.");
    			} else if (test == "fehler") {
    			    alert("Allgemeiner Fehler. Datensatz nicht gespeichert");
    			} else if (test == "ok") {
    			    location.reload(); 
    			}
    		    }
    		}
    Ich habe den code gekürze. Es wird im <p> Tag definitiv das Wort ok ausgegeben. Das heisst, im responseText ist auch das richtige drin. Nur, es funktioniert schlicht und ergreifend nicht. Wenn ich zum testen das
    Code:
    //test ="ort";
    reinnehme dann funktioniert der vergleich. Also ich verzweifele an dem bissl code.

  2. #2
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.230

    Standard

    Ich habe die Frage nicht verstanden:
    Welcher Vergleich funktioniert nicht?
    Wo ist da ein P-Tag?
    Warum machst du kein
    alert(test)
    und lässt dir anzeigen was im responseText drin steht?
    Was steht da drin?
    Und wenn im responseText mehr als "ok" drin steht (ein P-Tag?), dann muss ein Vergleich eben mit dem Tag erfolgen oder nur prüfen ob in dem String irgendwo "ok" drin steht
    Ggf. sich mal die Länge des Strings ausgeben lassen...Leerzeichen?
    Christian

  3. #3
    Zaungast
    Registriert seit
    30.08.2016
    Beiträge
    21

    Standard

    Hallo,
    sorry, seit vielen Stunden dabei. Der Vergleich If test = ort/html/ok funktioniert nicht. Im weiteren Verlauf habe ich
    Code:
    <p id="hinweis"></p>
    stehen, da wird ein "ok" ausgegeben, auch ein alert liefert mir ein "ok", jedoch sollte ja bei einem "OK" ein reload erfolgen bzw bei einem "ort" ein Hinweis...

    Hier mal die ganze Funktion:
    Code:
    	<script>
    	    function addds(land) {
    		var txt;
    		var txt2;
    		var test;
    		var eingabe = prompt("Bitte eine neue Bezeichnung eingeben:");
    		    if (eingabe == null || eingabe == "") { return; } else { txt = eingabe;	}
    		var eingabe2 = prompt("Bitte einen Link eingeben:");
    		    if (eingabe2 == null || eingabe2 == "") { return; } else { txt2 = eingabe2; }		
    		    
    		if (window.XMLHttpRequest) { xmlhttp=new XMLHttpRequest(); } else { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }		
    		
    		xmlhttp.onreadystatechange=function() {
    		    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
    			test = xmlhttp.responseText;
    			document.getElementById("hinweis").innerHTML=test;
    			//test ="ort";
    			if (test == "ort") {
    			    alert("Diese " + txt + " Bezeichnung existiert bereits.");
    			} else if (test == "html") {
    			    alert("Dieser " + txt2 + " Link existiert bereits.");
    			} else if (test == "fehler") {
    			    alert("Allgemeiner Fehler. Datensatz nicht gespeichert");
    			} else if (test == "ok") {
    			    location.reload(); 
    			}
    		    }
    		}
    		xmlhttp.open("GET","addsubmenu.php?wert="+txt + "&html=" + txt2 + "&land=" + land ,true);
    		xmlhttp.send();
    	    }               	    
    	</script>
    EDIT:
    Ahja, wenn ich das php so umbaue das responseText eine Zahl zurück gibt, und ich den If Block auf
    Code:
    			if (test == 1) {
    			    alert("Diese " + txt + " Bezeichnung existiert bereits.");
    			} else if (test == 2) {
    			    alert("Dieser " + txt2 + " Link existiert bereits.");
    			} else if (test == 8) {
    			    alert("Allgemeiner Fehler. Datensatz nicht gespeichert");
    			} else if (test == 9) {
    			    location.reload(); 
    			}
    ändere, dann funktioniert alles wie es soll.... Damit kann ich leben, dann vergebe ich halt Nummern für die Ausgabe, aber es wurmt mich nicht zu wissen warum es mit textstrings nicht funktioniert.
    Geändert von HarGrove (31.10.2017 um 15:56 Uhr)

  4. #4
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.230

    Standard

    Mal die Länge geprüft.....
    Geändert von Christian Marquardt (31.10.2017 um 16:03 Uhr)
    Christian

  5. #5
    Zaungast
    Registriert seit
    30.08.2016
    Beiträge
    21

    Standard

    Gnarf......

    Ein "ort" ergibt eine Length von 4...... Das wird wohl ein space mitgesendet..... Verflixt.

    Dank dir für diesen wertvollen Hinweis.

  6. #6
    Forenheld
    Registriert seit
    26.02.2003
    Beiträge
    16.230

    Standard

    Benutze dann

    https://www.w3schools.com/jsref/jsref_indexof.asp

    dann muss ein Vergleich eben mit dem Tag erfolgen oder nur prüfen ob in dem String irgendwo "ok" drin steht
    Christian

  7. #7
    Zaungast
    Registriert seit
    30.08.2016
    Beiträge
    21

    Standard

    Vielen Dank.

    Ich bin dabei auf includes gestoßen, damit klappt das jetzt. Und jetzt geh ich lieber an die frische Luft, sonst mache ich noch mehr so dusselige fehler.

 

 

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •