if wird nicht ausgewertet (AJAX)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • if wird nicht ausgewertet (AJAX)

    Hallo,

    ich habe hier ein AJAX Request und frage damit das Feld status in einer mysql datenbank ab. Wenn status up ist wird eine Lichtlaufleiste angezeigt, wenn der status down ist wird die Grafik gegen eine ausgeschlatete Lichtlaufleiste ausgetauscht.

    Leider funktionier aber die if anweisung nicht, sobald ich die Variable request aus der Datenbank füttere. Wenn ich die Variable mit alert(request) überprüfe steht aber "up" oder "down" drin. Wenn ich die Variable mit request="up" setze funktioniert es, alert(request) zeigt genau den gleichen wert an. Was kann das sein? Hier ist der Codeteil der nicht funktioniert:

    function updateImage() {
    if (request.readyState == 4) {
    var result = request.responseText;
    alert(result); //<-hier wird "up" angezeigt
    var bild_start = new Image();
    var bild_stop = new Image();
    bild_start.src="lauflinie.gif";
    bild_stop.src="lauflinie_stop.gif";

    if (result=="up") //<-trozdem wird die else schleife ausgeführt.
    document.images[0].src = bild_start.src;
    else
    document.images[0].src = bild_stop.src;

    }

  • #2
    schon mal an das Leerzeichen gedacht

    Kommentar


    • #3
      Hmmm, hab ich mal mit alert(encodeURIComponent(result)) überprüft und tatsächlich liefert "request.responseText" folgenden String up%0A%0A%0A%0A%0A%0A

      0A in Hex ist ein Linefeed, woher kommen denn diese Linefeeds ??????????
      Ich schicke vom PHP Server zum Test lediglich "up" mit echo "up".

      Kommentar


      • #4
        Was steht denn vor echo "up" in deinem PHP-Script?

        Kommentar


        • #5
          Hallo,

          das php script sieht einfach so aus:

          <?php
          require_once 'mydb.php';
          $db = new MyDb();

          $sql = "SELECT status FROM gwpicfg WHERE id=" . $id;
          if($result=$db->querySingleItem($sql))
          echo $result;
          ?>

          Zum testen hab ich echo $result einfach durch echo "up"; ersetzt, um sicher zu sein, dass die Zeichen nicht aus der Daenbank kommen.

          Gruss
          Gerd

          Kommentar


          • #6
            "<?php" sind die ersten 5 Zeichen im Script?

            Kommentar


            • #7
              Ja genau, das ist die ganze Datei, sie dient nur dazu um das Feld Status in der db abzufragen und soll up oder down zurück geben.

              Kommentar


              • #8
                Dann sind die Leerzeichen aus mydb.php. Oh Wunder.

                Kommentar


                • #9
                  Hallo,

                  die Datei bestehet jetzt nur noch aus:

                  <?php
                  echo $result;
                  ?>

                  Trotzdem das selbe Ergebnis.
                  Das mus irgendwie mit dem AJAX Request und der Eigenschaft request.responseText zusammen hängen.

                  Kommentar


                  • #10
                    hi ich hatte bzw hab ein ähnliches problem.
                    bei mir übergibt der request einen umbruch vor dem text obwohl nirgends in der Datei oder der Datenbank ein Umbruch zu finden ist.
                    ich hab einfach ne needle mit übergeben und mir dann mit split(); die gewünschte information ausgelesen.
                    ist zwar son bissl geschwuchtelt, aber bis ich dahintergekommen bin wo denn da der fehler liegt funktionierts
                    Die Milch bleibt ranzig!

                    Kommentar


                    • #11
                      Ja, das ist genau das Problem, es sind 6 Umbrüche (Linefeeds) die der Request übergiebt, in einem Formular merkt man das nicht, wenn man die Ergebnisse aber auswerten möchte, ist das schon ziemlich störend, hat niemand eine Ahnung woher diese Umbrüche kommen?

                      Kommentar


                      • #12
                        hm ... das Phänomen ist mir noch nie passiert, vielleicht auch weil ich nicht mit PHP zu tun habe, aber warum ersetzt du nicht einfach die Steuerzeichen und erst dann vergleichen?

                        Kommentar


                        • #13
                          Hallo,

                          ich hab das Problem gelöst indem ich nach jeder Antwort die letzten 6 Zeichen im String entferne und dann vergleiche. Aber interessieren tut es mich trozdem wo das herkommt. Naja, jedenfalls läufts jetzt.

                          Gruss
                          Gerd

                          Kommentar


                          • #14
                            Häng doch mal alle beteiligten Dateien hier rein (Attachment, nicht den Inhalt posten), dann schauen wir mal.

                            Kommentar


                            • #15
                              ich glaube, dass er einfach nach dem
                              ?> einfach 4 mal return gedruckt hat.
                              wenn er alles nach dem ?> löscht, dann wird es keine lehrzeichen mehr bei ausgabe geben.
                              und in schlimstem fall kann mann immer noch
                              result=decodeURIComponent(result);
                              result=result.replace(/^(\s*)(.*\S)(\s*)$/g,"$2");
                              machen
                              Zuletzt geändert von Slava; 06.12.2006, 03:08.
                              Slava
                              bituniverse.com

                              Kommentar

                              Lädt...
                              X