Antworten auf deine Fragen:
Neues Thema erstellen

Ajax Call mit IF/ELSE on Success

BlackHawk3

Aktives Mitglied

Hallo,
ich verzweifel gerade an folgendes Problem:

Code:
$("#step1").submit(function(e){
      e.preventDefault();
		  daten = $("#step1").serialize();
		  $.ajax({
			type: "POST",
			url: "functions/validate.php",
			data: daten,
			success: function(msg){ 				
				if (msg == 'true') {
					alert('if');
				} else {
					alert('else');
				}
			}
		   });
		});

Kurz zur Funktionsweise:
Es wird ein Formular abgesendet, dann wird in einer PHP-Datei gecheckt ob alles so ist wies sein soll und gibt dann mittels echo true oder false aus. (also ist es ein string)

Anschließend soll beim success das echo überprüft werden und endweder auf eine neue Seite weiterleiten oder eben ein Benutzerhinweis erscheinen.

Problem:
Es wird mir nach dem Absenden des Formulars die Variable msg von ajax zurückgeben als "true", datentyp ist auch string, und wenn ich alert(msg) mache wird mir auch true angezeigt. Aber das ergebnis ist immer das ich in dem ELSE-Block lande, selbst wenn die Bedingung wahr ist.

Weiß einer was ich übersehe?
 

Curanai

Aktives Mitglied

AW: Ajax Call mit IF/ELSE on Success

Lässt sich ganz einfach prüfen - alert( typeof(msg) ). Du schreibst zwar, dass ein String zurückgeschickt wird, aber der Teufel ist ein Eichhörnchen ...

Alternativ: Verwende keine reservierten Wörter sondern probiere mal "ja" und "nein" (oder ähnlich).
 

Duddle

Posting-Frequenz: 14µHz

AW: Ajax Call mit IF/ELSE on Success

Ich tippe auf ein unsichtbares Zeichen / Leerzeichen im Ergebnis. Lass es dir auf eine Konsole ausgeben, damit du den gesamten String siehst.
Alternativ könntest du auch im msg-String einfach mit .indexOf() nach "true" suchen.


Duddle
 

BlackHawk3

Aktives Mitglied

AW: Ajax Call mit IF/ELSE on Success

mit typeof hatte ichs ja probiert, daher die sicherheit mitn string und true und false hatte ich anfänglich anders genannt.

in firebug steht auch als rückgabewert "true". In der php steht echo 'true'; also eigtl. kein Platz für Leerzeichen. Ich versuchs mal mit trim() und/oder indexOf.

Ich meld mich gleich mit dem Fazit.
 

Duddle

Posting-Frequenz: 14µHz

AW: Ajax Call mit IF/ELSE on Success

Du könntest auch mal die .php-Datei "success" o.ä. statt "true" zurückgeben lassen, damit du nicht über irgendeine blödsinnige JavaScript-Typinterpretation stolperst.


Duddle
 

BlackHawk3

Aktives Mitglied

AW: Ajax Call mit IF/ELSE on Success

So habs nu ausprobiert. Mit trim hat sich gar nichts verändert.
Mit indexOf gehts nun.

Aber erklären kann ichs mir nicht, wieso das nicht klappt, wenn ich mittels trim sogar sicher gehe, dass keine Leerzeichen oder so drin sind.

Kann mir das jemand erklären oder Denkanstöße dazu geben? Ich will ja aus der Sache auch was lernen. Kann es vll. an unterschiedlichen Zeichenkodierungen liegen?

Auf jedenfall vielen Dank für eure Hilfe!
 

Curanai

Aktives Mitglied

AW: Ajax Call mit IF/ELSE on Success

Wenn Dein "true" nun kyrillisch geschrieben ist, um koreanisch abgefragt zu werden ... ehm ... "vielleicht ein Problem". Da Du aber keine Umlaute etc. enthalten hast, tendiere ich eher zu Nein.

Interessant: indexof() sucht ja nur diesen String - ergo muss mehr drin sein. ;) Vorschlag: Lass Dir mal noch die String-Länge anzeigen ... ob "true" wirklich eine 4 ist. ;)
 

BlackHawk3

Aktives Mitglied

AW: Ajax Call mit IF/ELSE on Success

naja nee muss nicht. (habs "true" zu "ja" gewechselt)

Code:
var n = msg.indexOf('ja');
if (n >= 0) {...}

Bei der Variante isses dann ja Wurst ob mehr drin ist oder nicht. Aber ich werd mal testweise die Länge des Strings ausgeben. Dürfte dann ja nur noch 2 sein.

EDIT:
Okay...length ist 4 bei nem Wort mit 2 Zeichen.

EDIT EDIT:
Okay... hab wohl irgendwas falsch gemacht gehabt...
if ($.trim(msg) == "ja") {...} funktioniert nun.

Man das ärgert mich ja das ich auf sone doofe Falle reingefallen bin. Danke schön euch beiden. Alle beiden Lösungen waren also Richtig von euch ^.^
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.614
Beiträge
1.538.351
Mitglieder
67.525
Neuestes Mitglied
mgtaucher
Oben