AJAX Timeout Exceptions

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ein interessantes Session-Phänomen.
    Ich setzte, wie bereits geschildert meine Session-Variablen nach dem Login.
    Unter anderem $_SESSION['rolle']. Über diese Variable realisiere ich mein Rollenkonzept.
    Wenn ich einen neuen Benutzer anlege, weise ich diesem eine auch eine Rolle zu. Variable $rolle.
    Aber meine Session-Variable übernimmt nun die Rolle des neu angelegten Benutzers.
    Wie zum Teufel :twisted: :twisted: setzt er die Session-Variable um, obwohl ich doch nicht ausdrücklich diese zuweise.

    Liegt es daran, dass $rolle den gleichen Bezeichner hat wie $_SESSION['rolle']????
  • Im IE wird mir beim Laden der Seite ein Fehler angzeigt. Screenshot anbei. Im FF taucht dieser Fehler allerdings nicht auf. Wie auch immer der IE gibt mir irgendwelceh Zeilen und Zeichen aus, die mir aber mal ueberhaupt nichts sagen.
    Womit kann das zusammen haengen, wenn erforderliche Daten nicht verfuegbar sind?
    Bilder
    • pic12215.jpg

      44,22 kB, 437×290, 447 mal angesehen
  • Das Problem liegt an meinem WindowLoader begraben. Habs mal debuggen lassen mit alerts.

    Quellcode

    1. var element = new Array();
    2. var loader = new Array();
    3. function updateWindow(sites) {
    4. for(i=0; i<sites.length; i++) {
    5. element[i] = sites[i]["div"];
    6. loader[i] = new net.ContentLoader(sites[i]["url"],handleUpdate,null,'POST',null,null);
    7. }
    8. }
    9. function handleUpdate() {
    10. for(i=0; i<loader.length; i++) {
    11. document.getElementById(element[i]).innerHTML = loader[i].req.responseText;
    12. }
    13. }
    Alles anzeigen


    Das Ding ist, dass er bei jedem Aufruf handleUpdate() loader.length durchläuft, aber beim ersten und zweiten Aufruf loader.req.responseText noch kein Inhalt hat, bzw. noch nicht ausgeführt wurde.
  • Habe es dann mal mit einem index probiert:

    Quellcode

    1. var element = new Array();
    2. var loader = new Array();
    3. var index = 0;
    4. function updateWindow(sites) {
    5. for(i=0; i<sites.length; i++) {
    6. element[i] = sites[i]["div"];
    7. loader[i] = new net.ContentLoader(sites[i]["url"],handleUpdate,null,'POST',null,null);
    8. }
    9. }
    10. function handleUpdate() {
    11. document.getElementById(element[index]).innerHTML = loader[index].req.responseText;
    12. index++;
    13. }
    Alles anzeigen


    Dieses auch teilweise, dass er mir keine Fehlermeldung bringt. Aber immer noch sehr fehleranfällig. Beim Testen hat er mir beim jeden zweiten oder dritten Versuch wieder einen Fehler ausgeworfen, bzw. Teile der Seite nicht geladen.

    Wie kann ich das besser und fehlerfrei umsetzen? Ein Aufruf handleUpdate(i) indem ich den Index fix übergebe funktioniert auch nicht!!!
  • also dass dein erster code nicht ging ist klar, oder?
    2 schleifen ineinander.. logarithmisch.. nein.. das war nix

    der 2te code ist besser:
    erklär mir mal bitte die ContentLoader Parameter.
    kann ich an die handleUpdate keine Parameter übergeben?
    die nutzung von der index globalen funktioniert zwar, aber ist eher suboptimal

    ich nehme an, dass du versuchst auf irgendwelche elemente zuzugreifen, die nicht existieren. dadurch bricht die funktion ab und der index zähler wird nicht mehr erhöht
  • Ja das ts komisch. Hab da schon einiges ausprobiert. Aber wenn ich i als Parameter an den handler sende, funzts au net.

    Die Parameter sehen wie folgt aus:
    function(url, onload, onerror, method, params, contentType);
    url: der link zur php-Seite
    onload: meine callback-Funktion (der Handler)
    onerror
    method: meine Methode hier: POST
    params
    contentType


    Ich habs noch immer so wie in der ersten veriante, bloss dass ich einen try{}-Block drum herum gesetzt habe. Aber das ist auch nicht schön.

    Was anderes:
    Wie kann ich in meiner HTML-Seite Javascript-Aufrufen??
    Onload steht mir nicht mehr zur Verfügung, da ich die php-Seite in die divs meiner Main-HTML-Seite lade.
    So funktionierts leider nicht:

    Quellcode

    1. ... normales HTML
    2. <td>
    3. <?php if(isset($PL_ID) && $PL_ID!='') { ?>
    4. <script language="javascript" type="text/javascript">
    5. showSupervisorListRequest();
    6. supervisorsEditRequest();
    7. </script>
    8. <?php } ?>
    9. <select>
    10. ...

    Die Funktion, die aufgerufen wird, soll option-Einträge in meine Select-Liste laden!
  • "nilitsch" schrieb:

    Das Javascript soll aufgerifen werden, wenn die Seite in mein div geladen wird. Aber onload steht ja nicht mehr zur Verfügung?


    jaja, das ist schon klar... aber deine "haupt html datei", die datei die alle ajax funktionen aufruft, die weiß doch welche seite sie mit ajax nachladen soll.
    folglich kannst du doch direkt aus der onreadystatechange-methode diese javascript funktion aufrufen
  • Mein Ajax oder XMLHttpRequest rufe ich ja über javascript auf. Ausgelöst werden diese Funktionen ja über irgendwelche Events. Jetzt will ich aber eine Seite aufrufen (in mein div laden), in dem ohne, dass ich was mache eine javascript funktion aufgerufen wird, die mein Ajax startet.

    Genauer, ich will dass PHP mir Daten aus der Datenbank in meine Select-Liste lädt, sobald ich die Seite aufruf. Das ist die selbe Funktion, die Aufgerufen wird, wenn ich onchange() meine Items in der Liste verändere. Jetzt möchte ich aber nicht, dass ich erst was ändern muss, sondern gleich beim Aufruf die entsprechenden Einträge in meiner Select-Liste stehen.

    ----------------
    Edited:
    Ach so, jetzt weiss ich was Du meinst. Ich soll die methode gleich Aufrufen, mit dem selben Link, über die ich meine Seite in mein div lade!?