Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Headervariablen gehen bei Ajax Request verloren

  1. #1
    Neuer Benutzer
    Registriert seit
    06.06.2010
    Beiträge
    27

    Standard Headervariablen gehen bei Ajax Request verloren

    Ich hab leider keine passenderere Überschrift gefunden
    Mein Problem besteht darin: Wenn ich eine Seite in einem Div mit Ajax einbinde gehen mir die im Header gespeicherten Sessions verloren.
    Wenni ch zum Beispiel das Gästebuch einbinde kann ich dann keinen Eintrag machen, weil mir die Variablen da irgendwie verloren gehen. Ich hoffe ich hab mich deutlich ausgedrückt... xD

    lg manuel

  2. #2
    Erfahrener Benutzer
    Registriert seit
    11.05.2011
    Ort
    Erde
    Beiträge
    605

    Standard

    Nabend,

    ich muss mal "blöd" zurückfragen: Und das liegt u. U. woran? Mit geringer Wahrscheinlichkeit: Der Server grillt Deine Session mit der "Garbage Collection", woraufhin Du mal Deine PHP-Einstellungen (ist es PHP?) prüfst. Mit höhrer Wahrscheinlichkeit hast Du ein - falls PHP - "session_regenerate_id()" ajaxseitig irgendwo in Verwendung, worauf dann aber Dein Session-Management falsch sein könnte ...

    Demnach: Nein, denn mit "irgendwie" und "geht verloren" kann Dir hier keiner helfen, was damit also nicht deutlich ausgedrückt ist. Dinge, die helfen? Lass Dir mal die Session vor dem AJAX und nach dem AJAX ausgeben - nachher ist es doch nicht verloren und es klemmt ganz woanders.

    Pampige Antwort? Nein, das täuscht, doch blicke ich gerade auf einen 21 Stunden Tag zurück, welcher nicht wirklich harmonisch lief, DNS Server nicht funktionierten, Domains offline, Kunden im Dreieck springend und sowas ... bin eigentlich noch ganz entspannt - aber der Termin morgen macht mich jetzt schon feddich. Kurz: "Ich will doch nur spielen ..."

    Grüße

  3. #3
    Neuer Benutzer
    Registriert seit
    06.06.2010
    Beiträge
    27

    Standard

    sry ich versteh das irgendwie nicht ganz. kenn mich so gut wie gar nicht mit ajax aus. ich beschreib nochmal mein problem:
    ich habe in PHP ein Script geschrieben und die verschiedenen profilreiter (info, bilder, pinnwand,...) include ich mithilfe von PHP und einem GET Request. Diese Requests wollte ich mir sparen und nur den bestimmten Teil mit AJAX einbinden.
    Das hab ich auch geschafft. Mein Problem ist jetzt glaub ich nur, das wenn ich die Pinnwand mit Ajax einbinde und etwas an die Pinnwand schreiben will die Variable für den Absender, also der username, den ich nach der anmeldung im header speichere, nicht in der Datenbank eingetragen wird... Ich denke, jetzt ist es etwas verständlicher wie weit ich mich auskenne und was mein Problem ist. Danke für deine Antwort

    Liebe Grüsse, Manuel

  4. #4
    Erfahrener Benutzer
    Registriert seit
    11.05.2011
    Ort
    Erde
    Beiträge
    605

    Standard

    Hi erneut,

    vielleicht bin ich heute von meinem Kaffeebecherrand gefallen und habe mir übelst den Kopf aufgeschlagen - oder das hast Du gerade wirklich geschrieben: "Anmeldung im Header speichern" ... öhm, wie sieht das denn bei Dir dann so aus?! Nur mal so aus reiner Neugier ...

    Ich könnte jetzt das Rätselraten weiterführen - ist die Pinnwand Drittanbieter?! Ist die Pinnwand in einem iFrame und das liegt ganz woanders? Oder liegt's an Deinem Query, dass Du den Usernamen gar nicht im Zugriff hast bei Deiner Datenbankaktion? Fehlt vielleicht ein session_start()? Tippfehler und kein ordentliches Debugging eingestellt? Versuchst Du was mit $_POST, $_GET, $_REQUEST, $_COOKIE, $_SESSION? Kannst Du Dir den Usernamen via Ajax zurückgeben lassen (bspw. in ein alert-Fenster?)? Was sagen Tools wie Firebug & Co.? Verstoß gegen die "same origin police" des Browsers?

    Manuel, niemand kann aufgrund Deiner Beschreibung auch nur im Ansatz einen Fehler für Dich lokalisieren, da Du einfach nicht konkret werden willst. Zeige doch mal bitte ...

    1. Die Ausgangsdatei (index.php o. ä.; bitte Formulare etc. mitbringen - gerade für die Pinnwand)
    2. den JavaScript-Teil, der den Request ausführt
    3. den PHP-Teil, der den Request annimmt

    Ansonsten können wir hier alle die Nadel im Heuhaufen suchen ... kurz: ZEIG SOURCE, sonst macht es gar keinen Sinn! (alternativ: Ruf mal in einer Werkstatt an und sag, dass Dein Auto komisch klingt ... aber Du kannst es nicht vorbeifahren, Marke und Modell nennst Du auch nicht und was komische klingt, beschreibst auch nur mit "na, da rechts irgendwie" - der Talk wird lustig!!)

    Nächtliche Grüße

  5. #5
    Neuer Benutzer
    Registriert seit
    06.06.2010
    Beiträge
    27

    Standard

    erstmal liebe grüsse und danke für deine antwort. ich hoffe, du hast dir nicht zu sehr weh getan... =)

    ja, ich speichere den usernamen in einer SESSION variable im header, ich habe alle dazugehörigen dateien im root liegen und wenn ich die datei einfach via php include funktioniert auch alles einwandfrei.

    wenn ich die datei aber VIA AJAX EINBINDE (kein Iframe, aber das sagte ich ja bereits) ist die SESSION im header anscheinend nicht gesetzt.

    auf der pinnwand ist ein formular und der absender wird aus der SESSION im header gelesen und eingetragen - wenn ich es über php include. verständlicher?

    HTML-Code:
        var request = false;
    
    
        function setRequest() {
    
            if (window.XMLHttpRequest) {
                request = new XMLHttpRequest();
            } else if (window.ActiveXObject) {
                try {
                    request = new ActiveXObject('Msxml2.XMLHTTP'); 
                } catch (e) {
                    try {
                        request = new ActiveXObject('Microsoft.XMLHTTP');
                    } catch (e) {}
                }
            }
    
    
            if (!request) {
                alert("Kann keinen erzeugen");
                return false;
            } else {
                request.open('post', "wall.php?u_id="+id, true);
                request.send(null);
                request.onreadystatechange = interpretRequest;
            }
        }
    
    
        function interpretRequest() {
            switch (request.readyState) {
                case 4:
                    if (request.status != 200) {
                        alert("Request abgeschlossen, ist aber nicht ok: "+request.status);
                    } else {
                        var content = request.responseText;
                        document.getElementById('content').innerHTML = content;
                    }
                    break;
                default:
                    break;
            }
        }


    und natürlich das content div...

    Gruß
    Geändert von mikdoe (08.07.2012 um 09:39 Uhr) Grund: Code Tags gesetzt

  6. #6
    Erfahrener Benutzer
    Registriert seit
    11.05.2011
    Ort
    Erde
    Beiträge
    605

    Standard

    Als ich mein AJAX noch von Hand geschrieben habe, war Folgendes die richtige Reihenfolge ... send() erst ganz zum Schluss.

    Code:
    request.open('post', "wall.php?u_id="+id, true);
    request.onreadystatechange = interpretRequest;
    request.send(null);
    Was ich nicht ersehe ist "id" - was steht da drin, was da übergeben wird? (wenn Du jetzt sagst "eine ID", dann melde ich mich hier ab )

    So ... das ist ein Punkt von meinen gewünschten 3en - jetzt bitte mal den Teil aus "wall.php" ... ich mutmaße immer noch ein fehlendes session_start() oder eine "regenerierte".

    Und: Du meinst wirklich, dass ich mir weh tue, nur weil ich meine Beine vom Kaffeebecherrand baumeln lassen kann, was?! Vielleicht bin ich ja nicht "nach außen" gefallen und sehe jetzt aus wie ein Hummer mit schwarzen Knopfaugen?! Na, Spaß beiseite ...

    Aber mir fällt da ja was gaaaaanz anderes auf ... jetzt halt Dich mal fest!!

    Woher kennt die Funktion "interpret" Dein Objekt "request"? Das dürfte schon Deine Antwort sein ... mein Tipp dazu: Erstelle das request-Objekt außerhalb einer Funktion im globalen Namensraum - dann würde es in beiden Funktionen so oder so zur Verfügung stehen und kann auch erfolgreich abgewickelt werden.

    Grüße vom Nacktschwimmer ... ach mist ... "Nachtschwärmer" wollte ich schreiben!!!

  7. #7
    Moderator Avatar von mikdoe
    Registriert seit
    18.01.2009
    Beiträge
    2.188

    Standard

    ZitatZitat von SteelWheel Beitrag anzeigen
    Woher kennt die Funktion "interpret" Dein Objekt "request"? Das dürfte schon Deine Antwort sein ... mein Tipp dazu: Erstelle das request-Objekt außerhalb einer Funktion im globalen Namensraum
    Finde ich nicht so gut diesen Tipp. Globaler Namensraum sollte möglichst vermieden werden, weil er eine sehr häufige Fehlerursache darstellt.
    Sollte er einmal später noch einen Request hinzufügen knallt es nämlich.
    Besser ist, das Objekt an die Funktion weiter zu reichen.
    ich liebe JS und Ajax wenn es crossbrowsertauglich ist

  8. #8
    Erfahrener Benutzer
    Registriert seit
    11.05.2011
    Ort
    Erde
    Beiträge
    605

    Standard

    Ich verwende ein Objekt als globalen Namensraum, wodurch es eben nicht knallt (das Beispiel hatte ich hier ja schon vor langer Zeit reingestellt; remember?). Problem ist aber auch das Wenige, was wir hier zu sehen bekommen - ergo gehe ich nur von einem Request aus, der ständig nur Pinnwand macht ... die gemeinen Fallstricke sind dann was für "ein paar Projekte später".

    Denn: Selbst bei mehreren Requests benötigst Du nicht jeweils eine eigene Instanz vom XMLHttpRequest.

    Kurzum: Den TO erstmal in die richtige Richtung schubsen, damit die Basics sitzen (und jedes verflixxte Buch zu AJAX geht immer nur von einem Request aus [habe hier sehr viele]) ...

  9. #9
    Moderator Avatar von mikdoe
    Registriert seit
    18.01.2009
    Beiträge
    2.188

    Standard

    ZitatZitat von SteelWheel Beitrag anzeigen
    Ich verwende ein Objekt als globalen Namensraum, wodurch es eben nicht knallt (das Beispiel hatte ich hier ja schon vor langer Zeit reingestellt; remember?).
    Haste mal einen Link?
    Bin nicht sicher, ob wir von der gleichen Sache reden.
    ich liebe JS und Ajax wenn es crossbrowsertauglich ist

  10. #10
    Erfahrener Benutzer
    Registriert seit
    11.05.2011
    Ort
    Erde
    Beiträge
    605

    Standard

    Sorry, den such ich nicht schon wieder - hatte ich dieses Jahr schon (in diesem Forum!). Das ist das Posting, wo Du Dich "beschwert" hast, dass es kein jQuery ist. Aktuell führe ich damit 12 Requests zeitgleich aus ... gar keine Probleme!! Und den besagten Link hatte ich erst kürzlich hier wieder verdrahtet ... *gnarf*, ich sollte davon nicht mehr reden - sonst muss ich das immer wieder verlinken.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Abhängige Dropdowns gehen nicht
    Von coinflip im Forum JavaScript
    Antworten: 0
    Letzter Beitrag: 07.05.2009, 12:13
  2. im Chat gehen Nachrichten verloren
    Von estonia im Forum Sonstige Probleme
    Antworten: 4
    Letzter Beitrag: 14.10.2008, 21:57
  3. IE: Fragment geht verloren
    Von DieHardMan im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 07.09.2007, 12:14
  4. Umlaute gehen, aber nicht mit Ajax.Request
    Von weisswurst im Forum JavaScript
    Antworten: 7
    Letzter Beitrag: 22.03.2007, 11:13
  5. Zeilenumbrüche gehen verloren
    Von cantdo im Forum JavaScript
    Antworten: 10
    Letzter Beitrag: 18.01.2007, 09:40

Lesezeichen

Lesezeichen
  • An Mister Wong übertragenMister Wong
  • An YiGG.de übertragenYiGG.de
  • An Google übertragenGoogle
  • An del.icio.us übertragendel.icio.us

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •