maythefunkbewitu
Grünschnabel
Mahlzeit zusammen,
eine Seite nutzt eine z.T. statisch, z.T. dynamisch generiert Tabelle, d.h. ursrpüngliche Daten werden mittels eines php-Skriptes aus einer DB geladen und angezeigt. Zur Laufzeit können die Benutzer neue Zeilen zur Tabelle hinzufügen und diese mit Daten füllen. Das Speichern der Tabellendaten läuft per javascript und XMLHttpRequest. In einer Schleife werden entsprechende Statements erzeugt und über ein weiteres PHP-Skript an die Datenbank gesendet. Es wird dabei zwischen neu und alten Einträgen unterschieden und entsprechend ein Update- oder Insert-Statement erzeugt.
Bis hier hin alles schön und funktionsfähig. Problematisch wird es bei dem Versuch, von dem Skript, das die Statements ausführt, irgendetwas zurückzubekommen. Speziell interessiert mich die ID der per Insert erzeugten Zeilen.
Die Requests werden synchron abgesandt, das DB-Skript führt lediglich das Statement aus und gibt die ID aus. Diese sollte anschließend über die responseText-Eigenschaft verfügbar sein. Ist sie aber nicht.
Füge ich jedoch ein alert mit dem responseText ein, zeigt dies zwar ein leeres Fenster. Anschließend ist der Wert jedoch vorhanden. Mal ein wenig Pseudo-Code:
http.responseText ist an dieser Stelle immer leer, es wird nicht in die if-Anweisung gesprungen. Das aufgerufene Skript wird jedoch ausgeführt, die neuen Einträge sind in der DB vorhanden. Ein eingefügtes alert:
Alert zeigt ein leeres Fenster, aber plötzlich wird der Code nach dem if ausgeführt.
Ich habe auch probeweise zwei alerts hintereinander gestellt. Das erste bringt ein leeres Fenster, das zweite den gewünschten Wert.
Das alert an der Stelle zu belassen ist keine Option, also falls jemand eine Idee hat.
Achja, der Code wurde bislang nur in Firefox 3 getestet.
Grüße
Torsten
eine Seite nutzt eine z.T. statisch, z.T. dynamisch generiert Tabelle, d.h. ursrpüngliche Daten werden mittels eines php-Skriptes aus einer DB geladen und angezeigt. Zur Laufzeit können die Benutzer neue Zeilen zur Tabelle hinzufügen und diese mit Daten füllen. Das Speichern der Tabellendaten läuft per javascript und XMLHttpRequest. In einer Schleife werden entsprechende Statements erzeugt und über ein weiteres PHP-Skript an die Datenbank gesendet. Es wird dabei zwischen neu und alten Einträgen unterschieden und entsprechend ein Update- oder Insert-Statement erzeugt.
Bis hier hin alles schön und funktionsfähig. Problematisch wird es bei dem Versuch, von dem Skript, das die Statements ausführt, irgendetwas zurückzubekommen. Speziell interessiert mich die ID der per Insert erzeugten Zeilen.
Die Requests werden synchron abgesandt, das DB-Skript führt lediglich das Statement aus und gibt die ID aus. Diese sollte anschließend über die responseText-Eigenschaft verfügbar sein. Ist sie aber nicht.
Füge ich jedoch ein alert mit dem responseText ein, zeigt dies zwar ein leeres Fenster. Anschließend ist der Wert jedoch vorhanden. Mal ein wenig Pseudo-Code:
Code:
var http = new XMLHttpRequest();
http.open('GET', url, 'false');
http.send(null);
if (http.responseText.length != 0){
...
}
http.responseText ist an dieser Stelle immer leer, es wird nicht in die if-Anweisung gesprungen. Das aufgerufene Skript wird jedoch ausgeführt, die neuen Einträge sind in der DB vorhanden. Ein eingefügtes alert:
Code:
var http = new XMLHttpRequest();
http.open('GET', url, 'false');
http.send(null);
alert(http.responseText);
if (http.responseText.length != 0){
...
}
Alert zeigt ein leeres Fenster, aber plötzlich wird der Code nach dem if ausgeführt.
Ich habe auch probeweise zwei alerts hintereinander gestellt. Das erste bringt ein leeres Fenster, das zweite den gewünschten Wert.
Das alert an der Stelle zu belassen ist keine Option, also falls jemand eine Idee hat.
Achja, der Code wurde bislang nur in Firefox 3 getestet.
Grüße
Torsten