DiPa: Daten werden nicht via "innerHTML" eingesetzt

Ich habe derzeit folgendes Problem:
Ich möchte ein Registrierungsformular entwerfen, welches dem Nutzer zeigt, ob der gewünschte Name schon in der Datenbank vorhanden ist oder noch benutzbar ist. Dafür habe ich ein PHP-Skript entwickelt, welches in der MySQL-Datenbank nach eventuell vorhandenen Werten sucht und eine graphische Meldung ausgibt.

Das Skript arbeitet mit einer Übergabe des Namens via URL; die Ausgabe sieht so aus:
Nicht vergebene Namen
Vergebener Name

Diese Ausgabe möchte ich mithilfe von Ajax in mein Formular einbinden. Das Feld für den Benutzernamen lautet "username", das gewünschte Ausgabefeld für die Nachricht lautet "apDiv56".

Das PHP-Skript erzeugt einen standardkonformen HTML-Code, welcher nun in das DIV-Feld "apDiv56" geschrieben + angezeigt werden soll.

Das PHP-Skript folgt nach dem Muster "lookfor.php?username=" + Name

Mein Ajax-Code wird extern eingebettet und sieht wiefolgt aus:

var request = false;  
  
try {  
	request = new XMLHttpRequest();  
}  
catch (trymicrosoft) {  
	try {  
		request = new ActiveXObject("Msxml2.XMLHTTP");  
	}  
	catch (othermicrosoft) {  
		try {  
			request = new ActiveXObject("Microsoft.XMLHTTP");  
		}  
		catch (failed) {  
			request = false;  
		}  
	}  
}  
function getFetchedInput () {  
	var inputusername = document.getElementById("username").value;  
	var query = "lookfor.php?username=" +  
	escape(inputusername);  
	// request.open ("GET", url, true);  
	// request.onreadystatechange = updateusernameField;  
	// request.send (null);  
	  
	//alert on finding all letters  
}  
  
function getCompleteInput () {  
	var inputusername = document.getElementById("username").value;  
	var query = "lookfor.php?username=" +  
	escape(inputusername);  
	request.open ("GET", query, true);  
	request.onreadystatechange = updatePreview;  
	request.send (null);  
}  
function updateusernameField () {  
	if (request.readyState == 4) {  
		if (request.status == 200) {  
			var response = request.responseText;  
			if (response == true) {  
				document.getElementById("username").className = 'verified';  
			} else {  
				document.getElementById("username").className = 'mistake';  
			}  
		}  
	}  
}  
function updatePreview () {  
          	if (request.readyState == 4) {  
          		if (request.status == 200) {  
          			alert(request.responseText);  
          			document.getElementById("apDiv56").innerHTML = request.responseText;  
          			  
          		}  
          	}  
}  

Der Javascript-Code gibt nun erfolgreich den meterlangen Code meines PHP-Skripts über den "alert"-Befehl aus. Nun kommt das Problem, dass der "innerHTML"-Befehl den HTML-Code (ursprünglich vom PHP-Skript) nicht einbettet. Das soll heißen, es gibt keine Änderung im Quellcode und auch keine sichtbare Änderung erfolgt.

Was muss ich ändern, damit es klappt?

  1. Hi,

    Das Skript arbeitet mit einer Übergabe des Namens via URL; die Ausgabe sieht so aus:
    Nicht vergebene Namen
    Vergebener Name
    Das PHP-Skript erzeugt einen standardkonformen HTML-Code, welcher nun in das DIV-Feld "apDiv56" geschrieben + angezeigt werden soll.

    Nein, der Code ist nicht standardkonform - das script-Element MUSS ein type-Attribut haben.
    Und style darf nicht in einem div vorkommen, style-Elemente dürfen nur im head vorkommen.

    Nun kommt das Problem, dass der "innerHTML"-Befehl den HTML-Code (ursprünglich vom PHP-Skript) nicht einbettet.

    Was sagt die Fehlerkonsole dazu?

    Das soll heißen, es gibt keine Änderung im Quellcode

    Du darfst natürlich nicht im Quelltext der Seite danach suchen, sondern nur im erzeugten DOM.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Und style darf nicht in einem div vorkommen, style-Elemente dürfen nur im head vorkommen.

      Das halte ich für ein Gerücht.

      1. Hi,

        Und style darf nicht in einem div vorkommen, style-Elemente dürfen nur im head vorkommen.
        Das halte ich für ein Gerücht.

        Das Körnchen Wahrheit an diesem beläuft sich auf 100% der Gesamtmasse.
        http://de.selfhtml.org/html/referenz/elemente.htm#style

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.
          1. Hi,

            http://validator.w3.org/check?uri=http%3A%2F%2Fde.selfhtml.org%2Fhtml%2Ftext%2Fanzeige%2Fdiv_span_style.htm

            Ach so, du vermagst nicht zwischen Element und Attribut zu unterscheiden - das hättest du dazu schreiben sollen ...

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            1. Hi,

              Ach so, du vermagst nicht zwischen Element und Attribut zu unterscheiden - das hättest du dazu schreiben sollen ...

              Ich dachte das wäre bekannt.

    2. Hi,

      »» Das Skript arbeitet mit einer Übergabe des Namens via URL; die Ausgabe sieht so aus:
      »» Nicht vergebene Namen
      »» Vergebener Name
      »» Das PHP-Skript erzeugt einen standardkonformen HTML-Code, welcher nun in das DIV-Feld "apDiv56" geschrieben + angezeigt werden soll.

      Nein, der Code ist nicht standardkonform - das script-Element MUSS ein type-Attribut haben.

      Ist korrigiert!

      Und style darf nicht in einem div vorkommen, style-Elemente dürfen nur im head vorkommen.

      Ist auch korrigiert!

      »» Nun kommt das Problem, dass der "innerHTML"-Befehl den HTML-Code (ursprünglich vom PHP-Skript) nicht einbettet.

      Was sagt die Fehlerkonsole dazu?

      Gar nichts; keine Meldung oder sonstiges speziell zu diesem Punkt.

      »» Das soll heißen, es gibt keine Änderung im Quellcode

      Du darfst natürlich nicht im Quelltext der Seite danach suchen, sondern nur im erzeugten DOM.

      stimmt natürlich; habe ich im Schreiben ganz vergessen, DOM dazu zu schreiben ... ;)

      cu,
      Andreas