AJAX Timeout Exceptions

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

  • In welcher Konfiguration meinst Du die URL anzugeben?
    Meinst Du in meiner eigenen config.php?

    Nochmal was anderes: Parameterübergabe in Javascript:
    in sendRequest übergebe ich 2 Parameter an meine Ajax-Funktion. Die Parameter hole ich mit aus einer Datenbank:

    Quellcode

    1. <a href="" class="normal" onclick="sendRequest('.$row->ID.', '.$row->username.'); return false"> zeige details </a>



    Quellcode

    1. function sendRequest(id, name) {
    2. request.onreadystatechange = showDetails;
    3. request.open('GET', 'showDetails.php?id='+ id + '&username=' + name, true); request.send(null);
    4. }



    Wenn ich auf meine Funktion klick bekommich die Fehlermeldung:
    user is not defined
    (user ist der entsprechende benutzername $row->username)

    Warum?? Ich muss doch gar nichts definieren, ich übergeb doch meine Parameter nur??
  • Nochmal bzgl. der config-Datei, in der ich meine http-URL festsetze, um meine php-Seiten in die divs zu laden. Seither habe ich nur eine config.php, in der ich meine Globale Variablen festsetze. Da ich die URL ueber Javascript aufrufe brauche ich dann noch eine config.js-Datei, oder kann ich mir das auch irgendwie aus meiner config.php auslesen lassen?? (Weil ich gern alles in einer Datei haben und konfigurieren moechte).

    Noch was anderes:
    Seither habe ich immer meine Email-Validierungs-Abfrage in PHP geschrieben:

    Quellcode

    1. function checkMail($sMail){
    2. if (eregi("^[_/.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,4}$", $sMail)) return true;
    3. else return false;
    4. }


    Jetzt wuerde ich es gerne in JavaScript umsetzen. Kann ich da meinen Wildcard Ausdruck genau so uebernehmen? Aber mit welcher Javascript-methode arbeite ich?
  • so in der art auf jeden fall:
    http://de.selfhtml.org/javascript/objekte/regexp.htm
    ansonsten gibts ja auch fertige javascript codes

    zur konfiguration der javascript datei:
    änder die endung einfach von JS auf PHP und füge den passenden header ein:

    Quellcode

    1. header("Content-type: text/javascript; charset: UTF-8");
    2. // header("Cache-Control: must-revalidate");
    3. header("Vary: Accept-Encoding"); // Handle proxies
    4. header("Expires: " . gmdate("D, d M Y H:i:s", time() + 86400) . " GMT");
  • sorry, das mit dem Header versteh ich nicht so ganz. Ich habe eine config.php. Dort wuerde ich gern meine URL angeben $URL = http://localhost/... Aber meine DIV-Inhalte mit geturl(); zu laden brauch ich ja eine Konfiguration fuer Javascript, ich ja nicht $URL in javascript anprechen kann. Oder meinst Du meine Javascript-Dateien in PHP umwandeln. Diese sind aber ziemlich vollgepackt und ich importiere ueber <script src="login.js"></script>

    Was ich auch gerade feststellen musste ist, wenn ich mit Session-Variblen arbeite und ich zum Beispiel mein Menue in ein div links oben mit
    geturl("menu", "http://blabla.de/bla/menu.php");
    lade, dann kann ich die Session-Variablen nicht auslesen. session_start(); habe ich in meiner php-Datei drin stehen, aber darauf zugreifen kann ich nicht :?:
  • in deiner html datei

    Quellcode

    1. <script src="login.php">


    login.php mit folgendem inhalt

    Quellcode

    1. <?php
    2. header("Content-type: text/javascript; charset: UTF-8");
    3. header("Vary: Accept-Encoding"); // Handle proxies
    4. header("Expires: " . gmdate("D, d M Y H:i:s", time() + 86400) . " GMT");
    5. include 'config.php';
    6. var boardurl = '<?php echo $config; ?>';
    7. ?>
    8. //restlicher javascript code


    mit sessions sollte eigentlich alles gehen - hast das session_start ja in beiden dateien drin, oder?
  • Hab gerade mit den sessions rumhantiert. Das komische ist, dass die Sessionvariablen nicht in eine andere Site, die ich in mein div lade, uebernommen werden. Wenn ich in in der Seite, die ich lade, erneut eine Session-Varibale setze ($_SESSION['test']='hallo';) dann wird mir nur diese ausgegeben, aber die anderen Sessionvariblen findet er nicht. Aber wenn ich meine Session-Variblen in einer anderen Seite ausgeben lasse, funktioniert es.... warum nicht, wenn ich mit divs und geturl arbeite???

    Update:
    ---------
    Hab mir die Session IDs ausgeben lassen und festgestellt, dass fuer jede Seite, die ich in ein Div lade eine NEUE Session ID vergeben wird. Liegt das daran, dass ich die Seiten ueber einen absoluten Pfad lade?
  • habs jetzt nicht getestet, aber könnte (sehr, sehr) gut sein
    warum rufst du deinen code denn überhaupt so auf?

    Quellcode

    1. geturl("menu", "http://blabla.de/bla/menu.php");


    es geht nur um die funktion file_get_contents, bei der du den kompletten url pfad brauchst

    also erstell dir am besten die config als php datei oder implementier die url zumindest zum testen als text
  • du arbeitest mit der file_get_contents lösung, oder?

    da emuliert php ja quasi einen eigenen browser
    php fragt also mit der file_get_contents methode die datei ab

    php ist also einerseits der client, andererseits auch der server
    es gibts also eine verbindung zwischen server und php client(=server) und eine verbindung zwischen dir und dem server
    2 verbindungen, 2 session ids

    musst dir also was anderes zur authentifizierung suchen
  • Ja, an includes habe ich auch denken muessen. Aber dann heisst es meine ganzen Javascript-Dateien umzubauen und Javascript-Header einfuegen. Bisher habe ich alles einheitlich (relativ schoen) getrennt. Unterordner "php" mit meinen php-ajax Funktionen und einen Unterordner "js" mit meinen ganzen Javascript-Dateien.
    Klar, wenn ich mit includes arbeite, dann kann ich meine divs mit
    objekt.innerHTML = <?php include('../verwaltung.php');?> fuellen.
    Waere das fuer mich wirklich die beste Loesung, oder habe ich noch Alternativen?

    Kann ich es nicht irgendwie ueber ein Datenbank-Session-Handling loesen? Wobei ich ja dann immer mit 2 Session-Ids rumhantieren muss und die Datenbank ja auch Performance kostet. Wuerdest Du den obigen Ansatz bevorzugen?

    -------
    Und noch eine klitze kleine Frage: Warum wird mir beim Firefox ganz unten links (Browser-Status-Aktivitaetsanzeige) machmal "Warten auf localhost..." angezeigt, obwohl die Seite fertig geladen ist?
    Sollte eigentlich dann "Fertig" dastehen.
  • @firefox: kann ich dir nicht beantworten: ist kein generelles problem
    wenn mein ajax script durch ist und keine anfragen mehr bevorstehen ist alles "Fertig"

    ne includen sollst du nicht in einen javascript code, sondern in der einzubindenden datei

    Quellcode

    1. req.open('POST', 'secure.php');


    secure.php

    Quellcode

    1. <?php
    2. session_start();
    3. switch($_POST['var']) {
    4. case 1:
    5. include 'ad.php';
    6. break;
    7. case 2:
    8. include 'ad2.php';
    9. }
    10. ?>
  • Die secure.php rufst Du ja bei deinem Login auf, richtig?
    was übergibst Du denn in $_POST['var'], bzw. wofür steht Deine switch-Anweisung?

    Ich habe jetzt mal in Erwägung gezogen in der URL meine Werte zu übergeben (als Alternative zu Session-Variablen). Ist nicht schön und funktioniert auch nicht. Kann nur eine Variable übergeben, komisch??
    Z.B. geturl('zustand', 'http://localhost/projekt/login_state.php?user=Peter&rolle=20');
    Er übernimmt nur meinen user, aber auf die Rolle kann ich nicht zugreifen. Warum, versteh ich nicht?

    Aber letztendlich löst das nicht mein Session-Problem, in dem global auf meine Login-Daten zugreifen kann. Z.b. if($_SESSION['login']==true) als Abfrage ob Benutzer eingeloggt ist.
  • Mir scheint es so, als ob Ajax und Sessions sich nicht wirklich gut vertragen. Weiss langsam nicht mehr weiter. Wenn ich in meiner fetch.php-Datei mit include($_POST['url']) arbeite, statt file_get_contents($_POST['url']), habe ich immer noch 2 Sessions. Es ist doch der XMLHttpRequest, der den php client emuliert und dadurch 2 sessions aufbaut.

    Wo soll/muss ich diese includes einfügen, dOnUt? Server-php (meine ganz normalen Seiten und Funktionen) oder Clientseitiges-php (ajax-funktionen, die über den XMLHttp Request aufgerufen werden)?
  • ajax und sessions haben absolut keine probleme..
    aber du arbeitest wohl immer noch mit urls

    egal ob du mit file_get_contents oder mit include eine url bindest
    die anfrage lautet nicht "schaue mal im ordner nach der datei x.php"
    sondern sie lautet... "frage den dns server, wem die domain xy.de gehört, löse dann die ip adresse auf, frage den apache webserver nach einer entsprechenden fertig geparsten seite und empfange sie"

    und wie gesagt, hier bist nicht du der client, sondern php

    letztendlich musst du also in deiner func_login.php die session starten
    und an die JavaScript funktion übergibst du nur einen pfad
  • Ok, die Ip kann ich auflösen:

    Quellcode

    1. $ip = getenv("REMOTE_ADDR");
    2. $host = gethostbyaddr($ip);


    Letztendlich brauche ich aber doch immer eine URL, von wo ich meine Daten bekomme oder? So wie ich Dich nun verstehe liegt mein Problem darin, das ich keine fertig geparste Datei zurück bekomme. Und ich bisher über den absoluten Pfad mit file_get_contents meine Datei parsen liess.
    Ich habe mich umgeschaut, finde aber nichts wirklich hilfreiches, wie ich eine fertig geparste Seite bekommen kann?
    Oder meinst Du das ich mit DOM meine Seiten im Voraus aufbaue (das wäre ja dann schon geparst)?

    Btw... Meine Session starte ich ja beim Login, wenn die Datenbankabfrage nach Benutzername und Passwort erfolgreich ist und setze dann meine Session-Variablen.