Ankündigung

Einklappen
Keine Ankündigung bisher.

jQuery-Ajax Bildbreite messen function callback

Einklappen

Neue Werbung 2019

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

  • jQuery-Ajax Bildbreite messen function callback

    Hallo, ich versuche gerade mit Ajax Bildbreite zu messen. Leider funktioniert es nicht wirklich gut. Ich bekomme immer den richtigen Wert wenn ich zweimal geklickt habe, erstes mal bekomme ich Wert: 0.
    Weiß jemand warum??? Vielen dank.


    PHP-Code:
    <!doctype html>
    <
    html lang="de">
      <
    head>
      <
    meta charset="utf-8">
        <
    title>Prüfe Breite</title>
        <
    style>
        
    #{   margin:0px auto;  }
        
    </style>
      </
    head>
      <
    body>
      <
    script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
      <script>
      $(document).ready(function(){

         var id = '1';

         $('#button').click(function() {

        $.ajax({
            dataType:"html",
            type: "POST",
            cache:false,
            async: true,
            data: "seite=" + id,
            url: "verzeichnis/script.php",
            success: function(breite) {
            $("#result").html(breite);
            var width = $('#result img').width();
            alert(width);
            }
        });
      });  });
      </script>
      <p id="button">Click here</p>
      <div id="result"></div>  
      </body>
    </html> 

  • #2
    Hat jetzt gar nichts mit PHP zu tun.

    MOD: Verschoben von PHP-Einsteiger
    The string "()()" is not palindrom but the String "())(" is.

    Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
    PHP.de Wissenssammlung | Kein Support per PN

    Kommentar


    • #3
      Das ist ein Zeitproblem, jquery´s .html benutzt die innerhtml Eigenschaft des Browsers und setzt die Variable ein, dann wird das DOM neu aufgebaut und ist noch nicht fertig damit wenn Du die Breite abfragst. Daher funktioniert es erst beim zweiten klick. Dom-Manipulationen mit innerhtml sind Murks - auch wenn es praktisch erscheint....

      Kommentar


      • #4
        was ist denn der Response beim ersten Klick?

        Kommentar


        • #5
          Beim ersten klick erscheint Wert 0. Wie soll ich Bildbreite dann messen? Gibt es Alternativen?

          Kommentar


          • #6
            Du musst drauf warten, dass das Bild geladen wurde: https://api.jquery.com/load-event/
            [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

            Kommentar


            • #7
              Zitat von User0101 Beitrag anzeigen
              Beim ersten klick erscheint Wert 0. Wie soll ich Bildbreite dann messen? Gibt es Alternativen?
              Erzeuge ein Image Objekt, werte .complete aus, hol Dir die Breite und setze es per append in´s DOM.

              Kommentar


              • #8
                Hallo,

                ich hatte mal vor gut einem Jahr das selbe Problem. Ja, man muss tatsächlich darauf warten, dass das Bild geladen ist. Man muss das aber nicht händisch machen, dafür gibt es fertige Plugins für jQuery: https://github.com/weblinc/jquery-imageready
                Eine detaillierte Antwort dazu findest auf StackOverflow: http://stackoverflow.com/questions/2...mage-is-loaded
                Oder auch hier (beste Antwort): http://stackoverflow.com/questions/4...ges-are-loaded


                MFG

                derwunner

                Kommentar


                • #9
                  Beitrag #6 hatte schon den Link dazu drin wie es geht, hast du wahrscheinlich übersehen.

                  Kommentar

                  Lädt...
                  X