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

Browserproblem: Chrome interpretiert eine AjaxAntwort nicht richtig!

SaFle

New member
Moin Moin aus Norddeutschland,

in meinem Projekt habe ich einen Ajax-Request auf eine PHP-Datei. Diese macht etwas. Als Antwort gibt sie einen String zurück in Form von "0|Erledigt" bzw. "1|nicht erledigt".

Per JS prüfe ich nun ob Zahl 0 oder 1 ist indem ich den string bei "|" teile. Alle herkömmlichen Browser "FF", "Opera", "Safari" und sogar "IE" machen es richtig. Nur Opera will nicht.
JS springt immer in den else-zweig. Testumgebung ist local (XAMPP).

Prüfe ich den Request an Hand der Konsole steht dort in "FF": "0|erledigt".
Die Konsole im Chrome sagt das gleiche nur macht er 2 rote Punkte davor. Ich habe die Antwort aus Chrome mal kopiert und in einem Editor eingefügt. Die beiden roten Punkte scheinen nur eine Formatierungssache von Chrome selber zu sein.

Da Chrome immer beliebter wird, kann ich die kompatiblität zu Chrome leider nicht vernachlässigen.

Weiß jemand rat?

Vielen Dank, Thomas

Code:
$.ajax({my request}).done(function(msg) {
   msg = msg.split("|");
   if(msg[0] == 0){
      do something....
   } else {
      do something
   }
 
Kannst du mal einen Testlink machen, wo wir uns das ansehen können. Ich hab' den Verdacht, dass dein PHP eventuell vor der Zahl noch irgendwas sendet (Leerzeichen, Steuerzeichen, o.Ä.).

PS: ins msg[0] ist ein String drin. Wenn man da mit == Vergleicht, können seltsame Dinge rauskommen. Mach' lieber === "0" oder wandle das mit parseInt() wirklich in eine Zahl um und vergleiche mit === 0.
PPS: Ich würde das als Transportdatenformat JSON verwenden - ist robuster, leicht erweiterbar und du musst dich nicht um das Parsen kümmern.
 
Danke erstmal, ja, ich mache eben eine Datei fertig und lade sie hoch. Gib mir ein paar Minuten.

Zu PS: Das dachte ich zu erst auch, aber wenn ich mit "0" vergleiche funktioniert es nicht. Deswegen bin ich bis jetzt davon ausgegangen, dass das parsen durch das trim zustande kommt.
Zu PPS: Werd ich mir mal anschauen.
 
Habe jetzt mal eine Testdatei nachgebaut mit den wichtigen Befehlen.

Problem

Lustigerweise funktioniert das jetzt auch.

Mir ist nun aufgefallen, das chrome in beiden fällen was unterschiedliches anzeigt.
Bild1 zeigt die Antwort von der Testdatei, Bild2 zeigt das Ergebnis meines Projektes. Hier auch zu sehen die beiden roten Punkte, die werden aber nur in Chrome angezeigt. In beiden dateien erzeuge ich die Antwort nach der selben vorgehensweise.
desktop1.jpgdesktop2.jpg
 
Dann sind das wahrscheinlich wirklich irgendwelche Steuerzeichen... oder eventuell auch die BOM - schau' doch mal nach, ob die PHP-Datei mit BOM gespeichert wurde.
 
Was bedeutet das, ob die PHP mit BOM gespeichert wurde? Ich beschäftige mich gerade auch mit der JSON rückgabe. Damit ist das Problem dann warscheinlich aus der Welt. Danke trotzdem für die Mühe.
 
Damit ist gemeint, wie der Quellcode im Editor kodiert wurde. Es gibt UTF-8 mit und ohne BOM. Welche Editor nutzt du zum scripten?
 
Ja, mach mal ohne BOM. Ich mach ja nicht viel mit UTF-8 aber irgendwie stört das BOM immer. Ich weiß garnicht wofür das gut ist :)
 
Die BOM ist dazu da, dass man bei einer Textdatei (was ja jede Quelltextdatei ist) erkennt, welche Kodierung verwendet wurde. Da im Web-Bereich die Kodierung aber im HTTP-Header (Content-Type) drin ist, ist das unnötig und die Browser hängen sich dann manchmal an der BOM auf.
 
Zurück
Oben