• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Was für ein Problen hab ich eigentlich ? JS oder PHP oder MYSQL ???

Vorstaedter

New member
Ich fang mal hier in der JS-Gemeinschaft an zu fragen :

In einem mehrstufigen Prozess wähle ich die Parameter für eine Datenbankabfrage aus. In jeder Stufe dieses Auswahlprozesses soll bekannt sein, wieviele Datensätze bereits selektiert sind. Dazu wird bei jeder Änderung der Abfrage ein AJAX-Request mit den aktuellen Abfrageparametern an die Datenbank geschickt und ein mit

$satzzahl = mysqli_num_rows($resultat);

ermittelter Wert vom Server zurückgegeben. Der wird dann in einem Fließtext an einer mit

<span id='idsatzzahl'>", 12345 ,"</span>

markierten Stelle mittels

document.getElementById('idsatzzahl').innerHTML = req2.responseText;

korrekt eingefügt. Das funktioniert problemfrei.

Die endgültige Satzzahl wird für diverse Auswertungen als Begrenzer für "for-Schleifen" gebraucht und deshalb auch gleich mit

satzzahl = document.getElementById('idsatzzahl').innerHTML;

in die (globale) JS-Variable "satzzahl" geschrieben.
Zum Abschluß des Auswahlprozesses werden alle für die weiteren Auswertungen erforderlichen Parameter in ein Cookie geschrieben, aus dem sich die dann folgenden Scripte "bedienen" können :

erasecookie(); // löschen von evtl. altem cookie
document.cookie = "Cookie" + "=" + land+"="+region+"="+ort+"="+jahr+"="+thema+"="+satzzahl+"="+anzeit; path="/";

Im Cookie stehen dann auch alle Parameter korrekt drin, nur für den Parameter 'satzzahl' enthält das Cookie den Wert "undefined".
Testweise habe ich mir die JS-Variable 'satzzahl' mit
alert ("Satzzahl = "+satzzahl);
ausgeben lassen und erhalte auch das erwartete Ergebnis, wobei jedoch zwischen dem String "Satzzahl =" und dem Wert für 'satzzahl' viele über mehrere Zeilen verteilte Leerzeichen ausgegeben werden, bevor der (richtige) Wert ausgegeben wird.
Ich habe überhaupt keinen Plan mehr, wo ich den Fehler suchen soll; im MYSQL, im PHP oder im JS. Bin völlig ideenlos und bitte um Hilfe.
Komplette Listings poste ich bei Bedarf gerne.
Dank und Gruß
Winfried
 
Zuletzt bearbeitet von einem Moderator:
das dürfte die auslieferung des wertes im php sein. das erfolgt vermutlich als text/html? dafür würde ich lieber json verwenden dann spart man sich das parsing im js und vermeidet solche fehler
 
@mikdoe; danke für Deine Einschätzung.
Hab ein bißchen weiter geforscht und glaube inzwischen auch, daß es mit der Rückgabe des AJAX-Requests zusammenhängt ( Rückgabe im Textformat ) Der zurückgegebene String enthält zwar "das Richtige" aber zusätzlich weitere Zeichen, die als Leerzeichen mit Alert ausgegeben werden und zwar immer genau 18 mehr, als der "Nutzstring".
Mich wundert nur, daß er sich problemlos in den HTML-Text einfügen läßt und korrekt dargestellt wird; wenn man aber aus dem DOM ausliest, sind die 18 Leerstellen wieder da und die so befüllte Variable gilt als undefined odwohl der richtige Wert (auch) drin ist.
JSON wäre für mich eine komplett neue Baustelle ....
 
Ich würde erwarten, daß das von Ajax zurückgegebene Ergebnis, nämlich ein INT-Zahl oder von mir aus auch ein kurzer String sich gleich verhalten, egal ob ich ihn ins DOM einfüge oder in einer JS-Variablen speichere. Ist aber nicht so. Im DOM erscheint die Zahl richtig, d.h. ohne die führenden Leerstellen, in der JS-Variablen aber mit.....
Inzwischen habe ich den Rückgabewert mit satzzahl = parseInt(satzzahl_roh)
so hingebogen, daß es passt. Mein Problem ist damit gelöst, wenn auch noch nicht verstanden ....
 
Zurück
Oben