Problem mit dem Ajax Agent

  • Hello, weiß nicht ob ihn jemand kennt, aber ich nutze für meine Website den Ajax Agent (mit dem man daten an phpscripte mittels javascript senden kann..).. nunja ich habe auf meiner seite einen login der mit meinem phpbb zusammenhängt.. geht natürlich alles.. jetzt will aber so als kleinigkeit nicht nur prüfen ob beim login formular überhauptwas einegegeben wurde sondern auch mittels ajax agenten gleich ob username und pw stimmen... gut, ich hab die php funktion realisieren können und es auch mit javascript zusammenschließen.... habe dann auch eine dtaenbankabfrage in php gemacht, ob username und pw stimmen und die funktion hat dann auch brav true oder false an die javascript funktion geschickt.. habe das dann mittels alert ausgegeben in js, geht auch..

    nun habe ich die javascript funnktion CheckLogin() dort wird als erstes überprüft ob alle felder ausgefüllt wurden. dann ahbe ich ausserhalb die variable loginok = false;

    wenn loginok = false wird eine meldung ausgegeben dass username oder pw falsch sind.. geht auch, allerdings hab ichs jetzt so gelöst, da man bim ajax agent ja nur eine javascript funktion definieren kann wo die php funktion hinsendet, dass eben diese js funktion (getlogindata(str)) eben dieses true und false vond er php funktion mit der db anfrage empfängt.. wie gesagt in der ausgabe mit alert kommt tatsächlich true und false aber wenn ich die variable loginok auch umsetzen will, schreibt mir die CheckLogin funtkion wo ich dann loginok auf true oder false prüfe immer einen fehler, dass username und pw falsch sind.. jetzt meine vermutung: kann es sein dass javacript NICHt drarauf wartet bis php die javascriptfunktion fertig ausgeführt hat sondern parallel danneben schon das if mit dem (loginok) aufruft und deswegen nix gesetzt wird?

    thx für hilfe

    PHP
    if(isset($this) || !isset($this)){ // that's the question...
  • Bei deinen AJAX-Aufrufen musst du eine "Callback-Funktion" einrichten, die praktisch dafür sorgt, dass PHP mit seiner Funktion durch ist, und einen Wert zurückgibt, bevor Javascript weiter arbeitet.
    Verwende dazu die Javascript-Eigenschaften "readyState" und "onreadystatechange" die dir sagt, wie weit die AJAX Abfrage ist.

    Hab dir hier mal ein Beispiel reingestellt, dass per GET ein PHP-Skript aufruft, und dann bei Antwort den "responseText" in ein HTML-Element "response" schreibt.


    Grüße,
    Lizzard

    Sometimes you have a programming problem and it seems like the best solution is to use regular expressions; now you have two problems.