Daten werden nicht via "innerHTML" eingesetzt
DiPa
- javascript
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?
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
Und style darf nicht in einem div vorkommen, style-Elemente dürfen nur im head vorkommen.
Das halte ich für ein Gerücht.
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
Hi,
Ach so, du vermagst nicht zwischen Element und Attribut zu unterscheiden - das hättest du dazu schreiben sollen ...
MfG ChrisB
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.
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