Meine AJAX-Antwort enthält null-Daten. Nun, okay, nicht nur null-Daten, aber so ab und zu schon ein paar. Dumm nur, dass in der Abfrage, die hinter den Daten steht, eigentlich keine null-Reihen auftauchen; zumindest sehe ich an der passenden Stelle im phpMyAdmin sowas nicht. Woran liegt es nun?
Zum Ablauf meines AJAX-Requests:
1. Daten zum POST vorbereiten
2. Daten per jQuery.post zum Server POSTen
3. Daten werden auf dem Server verarbeitet, sprich, eine Abfrage an MySQL wird gestartet
4. Antwort wird per json_encode zurückgeschickt
5. Antwort wird per jQuery ausgewertet und angezeigt
Soweit, so gut. Nur in manchen Zeilen fehlen die Daten.
Okay, Firebug auf und den Request mal näher untersucht.
Meine POST Daten stimmen schon mal, also mal sehen, was der Server antwortet. Aha, in der Antwort liegen schon die null-Felder drin, also stimmt der php-Teil nicht.
Ein schnelles debug-printf auf dem Server kurz vor der Rückgabe zeigt mir an, dass die Abfrage und die Antwort stimmt. Na gut, dann habe ich den Fehler.
Die PHP-Funktion json_encode wandelt alle Strings mit Umlauten in null Daten um. In der Doku zu json_encode steht es ja auch:
Diese Funktion arbeitet nur mit UTF-8-kodierten Daten.
Ich muss also die Eingangsdaten der Funktion json_encode entsprechend UTF-8 konvertieren. Kein Problem, die Funktion utf8_encode hilft mir da weiter und siehe da: Nun funktioniert es wunderbar.
Erster Treffer bei Google und hat mir sehr geholfen – vielen Dank!
Yep, I second that first comment, this post was first on google and helped me. Thanks!
Vielen Dank! Super 🙂 Hat mir sehr geholfen
Vielen Dank, hat mich grad irre gemacht!
thx a lot!
Gesucht, gefunden, vielen Dank!
Danke
Also ich löse das, indem ich vor der mysql_query die das SELECT enthält, die Verbindung auf UTF-8 setze:
$result = mysql_query(„SET NAMES utf8“);
Grüße, Jan
Hat auch mir sehr geholfen. 🙂 Vielen Dank
Danke für diesen kleinen aber genialen Eintrag
Super! Vielen Dank!
$result = mysql_query(„SET NAMES utf8“);
Meine Nerven lagen schon blank!
Vorzugsweise sollte man allerdings
mysql_set_charset()
nutzen.Was die PHP Doku dazu sagt: