Mootools el.load();

  • Nabend,

    folgender Code:

    PHP
    $('load').load('/common/redirectexists/redirect_from.' + el.value);
    var response = parseInt($('load').get('html'));

    (Das PHP-Script, das von load angefragt wird ist "/common/redirectexists[.controller.php]", redirects_from ist ein get-Parameter, das ist bei mir halt so... ;))

    Das PHP-Script gibt 0 oder 1 aus, das wird in das load-div geladen und mit parseInt und .get('html') zu einer Variablen gemacht.
    Ob das so jetzt gut gelöst ist, soll hier jetzt nicht zur debatte stehen. :P

    Also ein alert(response); sollte am ende also 1 oder 0 ausgeben.
    Dies ist aber nicht der Fall, es wird nichts ausgegeben (leeres Confirm-Popup).
    Erst beim zweiten Klick auf den Trigger der das ganze auslöst wird der Wert in $('load') ausgegeben.

    Wenn ich an folgender stelle aber ein alert() einfüge:

    PHP
    alert($('load').load('/common/redirectexists/redirect_from.' + el.value));
    var response = parseInt($('load').get('html'));

    wodurch sich die nächste Zeile quasi aufschiebt bis man das Alert-Fenster weggeklickt hat, dann funktioniert es ebenfalls.

    Soll das also heißen, der Request dauert zu lange und ist bei Zeile #2 noch nicht so weit?

  • DH das du den Resporne erst ausführen sollst wen das Load fertig ist sprich mit onsucess

  • Ja, das ist Ajax. Das problem leigt darin, dass du den Request mit $().load(); startest, der sendet ihn und wartet auf die Antwort. Jetzt gibst du den Alert aus, aber da vom server noch nix da ist ist der leer. Dann kommt 1 oder 0 vom server und wird in das DOM Element geschrieben. Jetzt Startest du den 2. Request durch erneutes klicken, wieder wird ein Ajax Request an den Server gesendet und der Alert mit dem Inhalt des DOM Elements wird dir ausgegeben. Danach wiederrum schreibt $().load(); wieder 1 bzw. 0 in das Element.
    Gibts da auch sowas wie

    Code
    // jQuery, kenne Mootools nicht
    $.ajax({async: false;});


    Das würde dann dazu führen, dass dein Haupt Code irst dann ausgeführt wird, wenn alles was vom server kam im DOM Element steht.

    Der, der weiß dass er nichts weiß, weiß mehr als der, der nicht weiß, dass er nichts weiß.

    Wer nach etwas fragt, geht grundsätzlich das Risiko ein, es auch zu bekommen!

  • response - (object) Object with text and XML as keys. You can access this property in the 'success' event.

    Steht doch dort, es ist vorher nicht verfügbar das regelt Mootools so, was ja auch gut ist

    mfg