JavaScript Obwohl Bedingung = Wahr wird der Sonstteil ausgeführt

Hallo Leute,

ich habe folgendes Problem:
Wenn ich mich auf meiner Seite (mit AJAX Login) anmelden will, dann kommt immer die Meldung, dass die Zugangsdaten nicht korrekt sind. Dabei läuft das Skript auf dem Rechner daheim normal, nur auf den Server funktioniert das nicht. Hier der Code:
HTML:
<?xml version="1.0" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>Gemeinschaftsanlage EEP</title>
		<link rel="stylesheet" type="text/css" href="./lib/index.css" />
		<script type="text/javascript" src="./lib/index.js"></script>
		<script type="text/javascript" src="./lib/jquery.js"></script>
		<script type="text/javascript">
		$(document).ready(function()
		{
			$("#loginform").submit(function()
			{
				$("#psubmit").hide();
				$("#pmessage").removeClass().text('Zugangsdaten werden geprüft...').fadeIn(1000);
				$.post("login.php", { Username:$("#name").val(), Userpasswort:$("#passwort").val(), rand:Math.random() }, function(data)
				{
					if(data == 'true') /* diese Bedingung sollte wahr ergeben */
					{
						$("#pmessage").fadeTo(900, 0.1, function()
						{
							$("#pmessage").text('Sie werden eingeloggt...').addClass('ok').fadeTo(900, 1, function()
							{
								$("#loginbox").slideUp(500, function()
								{
									document.location = self.location.href;
								});
							});
						});
					}else if(data == 'eslaf'){
						$("#pmessage").fadeTo(900, 0.1, function()
						{
							$("#pmessage").text('Die Zugangsdaten sind leider nicht korrekt.').addClass('error').fadeTo(900, 1).delay(2000).fadeOut(300, function()
							{
								$("#name").val('');
								$("#passwort").val('');
								$("#psubmit").show();
							});
						});
					}else{ /*dieser Teil wird immer ausgeführt */
						$("#pmessage").fadeTo(900, 0.1, function()
						{
							$("#pmessage").text(data).addClass('error').fadeTo(900, 1).delay(2000).fadeOut(300, function()
							{
								$("#psubmit").show();
							});
						});
					}
				});
				return false;
			});
		});
		</script>
	</head>
	<body>
		<div class="Header">Gemeinschaftsanlage EEP</div>
		<div class="Menu">
			<div style="vertical-align: middle;">
				<span class="Element" onclick="window.location.href = './';">Home</span> |
				<span class="Element" onclick="window.location.href = './?s=data';">Projektdaten</span> |
				<span class="Element" onclick="window.location.href = './?s=users';">Registrierte Benutzer</span> |
				{if $smarty.session.id neq ""}
				<span class="Element" onclick="window.location.href = './?s=send';">Anlage einsenden</span> |
				<span class="Element" onclick="window.location.href = './?s=chat';">Chat</span> |
				<span class="Element" onclick="window.location.href = './logout.php';">Logout</span> |
				{else}
				<span class="Element" onclick="window.location.href = './?s=regist';">Registrieren</span> |
				{/if}
				<span class="Element" onclick="window.location.href = './?s=kontakt';">Kontakt</span> |
				<span class="Element" onclick="window.location.href = './?s=impressum';">Impressum</span>
			</div>
		</div>
		<div class="Seite">
			{include file="`$seite`.tpl"}
		</div>
	</body>
</html>
Ich hoffe, ihr könnt mir helfen.

wetter.php
 
Die login.php haste auch hochgeladen?
Was passiert denn da bzw. was gibt denn die zurück oder besser gefragt - bist Diu DIr sicher, dass die 'true' zurück gibt? Dafür müsste sie nämlich einfach nur ein geschriebenes 'true' auswerfen...check mal die Rückgabe (data via Firebug angucken) dieser php (Haste auch an die standard-mäßig genutzte Zeichen-Codierung aufm Server gedacht? Klingt für mich nach nem typischen Konfigurationsunterschied zwischen Windows- und Linux-Server.). Ein Zeichen mehr (oder falsch) und es knallt Dir alles weg. ;)
 
Zuletzt bearbeitet:
Ja, ich bin mir 1000%ig sicher, dass er "true" zurückgibt. Die Datei habe ich auch hochgeladen. Welches Zeichen soll da falsch sein? Ich kenne mich nicht so gut mit Linux Servern aus.
 
Also: in "data" stehen laut JavaScript 5 Zeichen. Kann es sein, dass das 5. Zeichen ein Leerzeichen ist? Woher kommt das aber dann? Wenn ich anschließend die Seite neulade, bin ich allerdings eingeloggt. :confused: Wenn ich den Inhalt von "data" mittels:
Code:
alert(data.value);
ausgeben will, zeigt er mir "undefined" an.
 
Erstens, data ist die Rückgabe der php-Datei - und das kommt eigentlich als Text zurück. Somit gibt es data.value gar nicht.
Zweitens, solltest Du z.B. Firebug nutzen (hab ich aber schon vorgeschlagen), da kannst Du nämlich zur Laufzeit mittels breaks im JS-Script debuggen und musst Dir nicht irgendwelche Inhalte mittels alert ausgeben (was ohnehin nur bei strings möglich wäre).
 
Firebug meldet, dass "data" gleich "true\n" wäre. Aber unter Windows und XAMPP hat das doch auch nichts gemacht. Soll ich das "\n" entfernen?
 
Afaik ist unter Windows ein Zeilenumbruch als \r\n definiert und unter unixoiden System nur \n. Ist mir auch schon öfter untergekommen, dass Windows ein einfaches \n dann einfach ignoriert.

/Edit: Stimmt sogar, siehe Wikipedia Zeilenumbruch
 
Zurück
Oben