Ajax Abfrage zur Formvalidierung gibt Rückgabestring auf weißer Seite aus

Kalma

Erfahrenes Mitglied
Hi,

mit Hilfe von Quaese habe ich mir eine schöne Ajax-Formvalidierung zusammengebastelt:

http://guerilla.ifloegel.de/register

Sobald man auf den Button klickt, und nichts eingetragen wurde, sollten eigentlich die Fehlermeldungen nacheinander in einem Div eingefadet werden.

Jetzt ist allerdings der Fall, dass die Meldungen einfach so auf dem weißen Bildschirm angezeigt werden, was mich wundert, denn es ging, und dann ging es auf einmal nicht mehr.


Hier ist mal, wie so eine PHP-Prüfungsdatei aufgebaut ist:
PHP:
	$strRet = array();
	// someone wants to register?
	if(isset($_POST['register'])) {	
		// post values									// obligation field
		$nickname			= $_POST['nickname'];		// * | unique info
		$password			= $_POST['password'];		// *
		$r_password			= $_POST['r_password'];		// *
		$email				= $_POST['email'];			// * | unique info
		$firstname			= $_POST['firstname'];		// *
		$lastname			= $_POST['lastname'];
		$terms				= $_POST['terms'];			// *
		$step				= '';
	
		// check availability of nickname and email adress
		$check_nickname		= $db->unique('user', 'user_nickname', $nickname);
		$check_email		= $db->unique('user', 'user_email', $email);
		
		if($check_nickname == 'notavailable' && $nickname != '') {
			$strRet[]	= '<li style="display: none;">Dein gew&uuml;nschter Benutzername ist bereits vergeben!</li>';
			$step		= 'unique';
		}
		
		if($check_email == 'notavailable' && $email != '') {
			$strRet[]	= '<li style="display: none;">Diese Email Adresse wird bereits verwendet!</li>';
			$step		= 'unique';
		}
		
		// nickname and email adress unique?
		if(count($strRet) == 0)
			$step	= 'values';
		
		
		// check values if unique was tested
		if($step == 'values') {
			if(empty($nickname)) {
				$strRet[] = '<li style="display: none;">Bitte w&auml;hle einen Benutzernamen!</li>';
			}
	
			if(empty($password)) {
				$strRet[] = '<li style="display: none;">Bitte w&auml;hle ein Passwort!</li>';
			}
				  
			if(empty($r_password)) {
				$strRet[] = '<li style="display: none;">Bitte wiederhole dein Passwort!</li>';
			}

		}
		
	
		echo(rawurlencode(arr2json($strRet)));
		exit();
	}


	// show displayfunction here later
	require(TEMPLATE_DIR.'/register.html');


Ein paar Sachen habe ich einfach rausgeschnitten, die nicht relevant sind.

Ich wundere mich, warum es nicht läuft, denn alles ist richtig eingebunden usw usw.. Hundert mal kontrolliert.


Wäre super, wenn da jemand einen Blick drauf werfen könnte.

Danke und Gruß
David
 
Hi,

die Fehlermeldungen erscheinen wie gewünscht beim Klick auf den "Einloggen"-Button rechts oben, da dieses Formular denselben ID-Bezeichner "form" besitzt, wie das Registrierungsformular.

Merke: Ein ID-Bezeichner muß im (X)HTML-Dokumentbaum eindeutig sein.

mfg Maik
 
Aber eben nicht in der gewünschten Form, was ja auch das Motiv deines Themas ist, und beim Klick auf "Einloggen", ohne zuvor die beiden Eingabefelder "Nickname" u. "Passwort" ausgefüllt zu haben, sollen wohl kaum diese sechs Meldungen bzgl. der fehlerhaften Registierung erscheinen :rolleyes:
  • Bitte wiederhole dein Passwort!
  • Deine beiden Passwörter stimmen nicht überein!
  • Bitte gib deine E-mail Adresse ein!
  • Bitte gib deinen Vornamen ein!
  • Bitte gib deinen Nachnamen ein!
  • Bitte akzeptiere unsere AGBs!

mfg Maik
 
Wenn ich auf Registrieren klicke, kommt bei mir folgendes:

Eine weiße Seite mit:
Code:
%7B0%3A%22%3Cli%20style%3D%5C%22display%3A%20none%3B%5C%22%3EBitte%20w%26auml%3Bhle%20einen%20Benutzernamen%21%3C%2Fli%3E%22%2C1%3A%22%3Cli%20style%3D%5C%22display%3A%20none%3B%5C%22%3EBitte%20w%26auml%3Bhle%20ein%20Passwort%21%3C%2Fli%3E%22%2C2%3A%22%3Cli%20style%3D%5C%22display%3A%20none%3B%5C%22%3EBitte%20wiederhole%20dein%20Passwort%21%3C%2Fli%3E%22%2C3%3A%22%3Cli%20style%3D%5C%22display%3A%20none%3B%5C%22%3EBitte%20gib%20deine%20E-mail%20Adresse%20ein%21%3C%2Fli%3E%22%2C4%3A%22%3Cli%20style%3D%5C%22display%3A%20none%3B%5C%22%3EBitte%20gib%20deinen%20Vornamen%20ein%21%3C%2Fli%3E%22%2C5%3A%22%3Cli%20style%3D%5C%22display%3A%20none%3B%5C%22%3EBitte%20gib%20deinen%20Nachnamen%20ein%21%3C%2Fli%3E%22%2C6%3A%22%3Cli%20style%3D%5C%22display%3A%20none%3B%5C%22%3EBitte%20akzeptiere%20unsere%20AGBs%21%3C%2Fli%3E%22%7D


Ist das bei dir denn nicht auch so?
 
Was bei dir derzeit folgt, sieht man ja auf deiner Seite live in Aktion.

Liest du hier eigentlich auch aufmerksam mit?

Entferne mal in diesem Formular das name- und id-Attribut, oder wandel darin den Bezeichner um:
HTML:
<form name="form" id="form" action="login" method="post" enctype="" >					<img src="templates/standard/images/form/textfieldbgleft.png" style="float:left;"  alt="Border" height="24" /><input id="nickname" type="text" name="nickname" value="Nickname" size="20" maxlength=""  onClick="javascript:this.value=''" class="input"  /><img src="templates/standard/images/form/textfieldbgright.png" style="float:left;"  alt="Border" height="24" /> <br /> <br />
					<img src="templates/standard/images/form/textfieldbgleft.png" style="float:left;"  alt="Border" height="24" /><input id="password" type="password" name="password" value="Passwort" size="20" maxlength=""  onClick="javascript:this.value=''" class="input"  /><img src="templates/standard/images/form/textfieldbgright.png" style="float:left;"  alt="Border" height="24" /> <br />
						
					<br />		
				
					<input type="hidden" name="hidden" value="from" />					<img src="templates/standard/images/form/buttonbgleft.png" style="float:left;"  alt="Border" height="24" /><input type="submit" name="quicklogin" value="Einloggen" onclick=""  class="button"  /><img src="templates/standard/images/form/buttonbgright.png" style="float:left;"  alt="Border" height="24" />				</form>


Bei Unklarheiten konsultiere einfach den w3c-Validator: http://validator.w3.org/check?uri=h...(detect+automatically)&doctype=Inline&group=0
Error Line 167, Column 29: ID "form" already defined

<form name="form" id="form" action="register" method="post" enctype="" >

mfg Maik
 
Ohje, wie dumm...

So ist das, wenn man mit den Klassen die man selber schreibt, nicht zurecht kommt ;)


Danke für die Hilfe Maik :)

Ach, eine Sache noch:


Wie realisiere ich denn jetzt eine Serverseitige Prüfung?
Das Formular wird ja jetzt nur per Ajax gesendet.

Wenn jemand jetzt kein JS aktiviert hat, muss er ja trotzdem sich anmelden können, etc.

Wie lös ich das aus?


Gruß
David
 

Neue Beiträge

Zurück