ich habe hier eine Datenbankabfrage, die manchmal klappt und manchmal nicht.
Das Problem liegt dabei aber sicherlich am Schnipsel „json_encode(array())“.
Leider kann ich gerade keine Beispieldaten posten.
Aber jetzt erstmal ausführlich.
Via Ajax poste ich einen Wert (eine Zahl) an die „load_something.php“.
Die PHP-Datei nimmt die Zahl und fragt alle Einträge, die dieser Zahl zugeordnet worden, ab.
Bei einigen Zahlen klappt das tadellos, bei anderen Zahlen bekomm ich einen Ajax error - also nicht direkt einen Fehler, sondern Ajax hat als Ergebnis error.
Jetzt habe ich mal die „load_something2.php“ erstellt, in der die Daten statt „echo json_encode(array())“ einfach via „var_dump“ ausgeben werden. Siehe da, es klappt und zwar für jede Zahl, also für jede Abfrage.
Ergo muss das Problem irgendwo beim json_encode liegen.
Nun zu den Daten, was ist enthalten:
URLs, Datwerte, Strings, Integer, leere Zeilen.
Ich könnte mir vorstellen, dass die URLs und Strings Probleme machen, durch Zeichen wie /, Ä, Ö oder €.
Kann das sein?
Du kannst dir in der Konsole deines Browsers die genauen Responses der Ajax-Calls ansehen (XHR). Da müsstest du dann auch den Fehler finden. Umlaute, Slashes etc. dürften kein Problem sein.
Manchmal erhalte ich mein Array, manchmal erhalte ich „AJAX failure“.
„load_something.php“ - Network - Response -
„This request has no response data available“.
//EDIT
ERLEDIGT:
Lösung gefunden - es war ein Fehler in der Datenbank. Ich hatte den Eintrag irgendwann mal per Hand korrigiert und da stand in einem Feld ein „ü“. Habe es jetzt in „ue“ umgeändert und dann ging es.
Ja da liegt sicherlich noch irgendwo anders das Problem.
In der Datenbank liegt das Ä bspw so vor: ä
Sicherlich gibt es hier gerade ein Problem, das ich noch nicht verstehe.
Das Ü stand aber nicht irgendwie codiert in der Datenbank, sondern einfach als ü.
Das Problem hat sich ja schon geklärt. Ich muss mich jetzt aber erstmal weiter belesen, ob man ohne weiteres in PHPmyAdmin in der DB einfach ein ü antragen könnte, ohne das es Fehler gibt.
Wenn Datenbank/Tabelle/Spalte, Datenbankverbindung, Dokumentenkodierung und HTML-Charset überall auf UTF-8 eingestellt sind (wie es sich gehört), dürfte es eigentlich keine Probleme bezüglich Sonderzeichen geben.
Also wenn ich bspw. mit PhpMyAdmin einen neuen Eintrag erstelle und bei einem String einfach ein „Üü“ schreibe, müsste das auch so funktionieren?
Dann war sicherlich was bei der Kodierung der Datei, die es abruft, falsch.
Ja, das Problem hatte ich schon einmal.
Da musste ich damals die Datei erneut mit Encoding UTF-8 in Sublime Text öffnen.
Wahrscheinlich werde ich das einfach mal für alle nochmal machen müssen.
Also prinzipiell:
Wenn direkt ein Ü in der DB über PHPMyAdmin in einem Feld eintrage, müsste das ohne Fehler oder ähnliches so wieder abgerufen werden.