Formular mit PHP und AJAX

Arndtinho

Erfahrenes Mitglied
Hallo,

ich habe eine PHP-Seite zum Bearbeiten von Userdaten. Ich hole die Userdaten aus einer Datenbank und stelle die Namen als Links dar. Wenn man jetzt auf einen Namen klickt, sollen die Formularfelder für das Bearbeiten gefüllt werden, ohne das die Seite neu geladen werden sollte.
Das sollte ja eigentlich mit AJAX funktionieren, oder? Hat jemand schonmal sowas gelöst und kann mir einen Tipp geben bzw. weis wo man entsprechende Tutorials finden kann?

Gruß,
Arndtinho
 
Hi,
ja das funktioniert mit Ajax - ein recht übersichtliches Tutorial für den Einstieg findest du hier: http://developer.mozilla.org/de/docs/AJAX:Getting_Started

ganz kurz und einfach zusammengefasst:
1 du musst dir in Javascript ein Objekt mit dem du httpRequests absetzen kannst erstellen (wieder mal ein unterschiedliches für IE und Mozilla, Opera etc)
2 du setzt mit diesem Objekt deinen Request ab -
du kannst dabei einstellen ob das ganze synchron oder asynchron ablaufen soll - also ob das script unterbrochen ist bis die Antwort da ist oder ob es weiterläuft. In diesem Fall hast du ein Funktion die Regelmäßig den Status der abfrage überprüft und du kannst so wirklich gut auf jedes Ereignis reagieren
3 Für das Ergebnis hast du 2 Möglichkeiten der Auswertung:
-responseText übergibt dir einen String
-responseXML gibt dir das Ergebnis als XML Objekt hinter, dass du parsen musst/kannst (wieder unterschiedlich in den Browsern).
 
Zuletzt bearbeitet:
Hallo,

nachdem ich mir das oben genannte Tutorial angeschaut habe, bin ich nun ein ganzes Stück voran gekommen. Nur eines verstehe ich nicht. Das Script funktioniert im IE, aber nicht im Firefox.
HTML:
var xmlHttp = createXmlHttpRequestObject();

function createXmlHttpRequestObject() {
	
   var xmlHttp;
	
   // IE
   //////
   if( window.ActiveXObject ) {
		
	try {
		xmlHttp = new ActiveXObject( "Microsoft.XMLHTTP" );
	}
	catch (e) {
		xmlHttp = false;	
	}
   }
   // Mozilla usw.
   ////////////////
   else {
	try {
		xmlHttp = new XMLHttpRequest();
		xmlHttp.overrideMimeType( 'text/xml' );
	}
	catch (e) {
		xmlHttp = false;	
	}
   }

   if( !xmlHttp )
	alert( 'Fehler beim Erstellen des RequestObjects!' );
   else
	return xmlHttp;
}

function getUserData( Id ) {

   var UserId = Id;
   var url       = '/course/useAjaxHelper/' + UserId;
	 
   // bearbeiten, wenn RequestObject nicht schon verwendet (0 = nicht initialisiert),
   // oder wenn die Antwort vollständig (4) vom Server empfangen wurde
   //////////////////////////////////////////////////////////////////////////////////
   if( xmlHttp.readyState == 0 || xmlHttp.readyState == 4  ) {
	
	xmlHttp.open( 'GET', url, true );
	xmlHttp.onreadystatechange = fillEditFormular;
	xmlHttp.send( null );	
   }
   else {
	// neuer Versuch nach 1 Sekunde, wenn RequestObject noch nicht bereit
	//////////////////////////////////////////////////////////////////////
	setTimeout( 'getUserData( UserId )', 1000 );
   }
}

function fillEditFormular() {

   if( xmlHttp.readyState == 4 ) {
		
	if( xmlHttp.Status == 200 ) {
		alert( 'Ok' );
	}
	else {
		alert( 'Fehler in fillEditFormular()' );
	}
   }
}
Ich erhalte da die Fehlermeldund aus fillEditFormular(). Kann mir jemand sagen wieso?

Gruß,
Arndtinho
 
Lass dir doch mal den Status-Code des HTTP-Responses ausgeben. Vielleicht existiert das Ziel deines Request gar nicht (404)?
 
Sehr fleißig ;-)
hast nur einen kleinen Fehler:
Mozilla achtet auf die Groß- und Kleinschreibung etwas genauer
HTML:
if( xmlHttp.status == 200 )
sollte klappen
 
@hans jörg
danke, daran hat es gelegen. jetzt gehts ans Füllen der Formularfelder.

@split
wenn das Ziel nicht existieren würde, hätte es meiner meinung auch nicht mit dem IE funktionieren können.


Gruß,
Arndtinho
 
Zurück