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.
Wieder was gelernt.
8 Kommentare:
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
Kommentar veröffentlichen