Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Sessioni e ajax

  1. #1

    Sessioni e ajax

    Ciao a tutti,
    mi sono imbattuto in un problema alquanto scomodo.
    Riguarda l'interazione tra chiamate ajax e le sessioni.

    Questa è la pagina che ho creato

    Codice PHP:
    <?php
    session_start
    ();
    header"Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
    header"Last-Modified: " gmdate"D, d M Y H:i:s" ) . " GMT" ); 
    header"Cache-Control: no-cache, must-revalidate" ); 
    header"Pragma: no-cache" );


    if (
    $_GET['do'] == 'act') {
    $_SESSION['prova'] = 'eeeek!';
    echo 
    $_SESSION['prova'];
    }
    ?>
    <html>
    <head>
      <title>Ajax sessions</title>
      <script language="javascript" src="js/ajax1.js"></script>
    </head>

    <body >
      [url="#"]?do=act', 'page');">Waiting for response from Server[/url]

    <div id='page'></div>
    </body>
    </html>
    E il file ajax1.js associato
    Codice PHP:
    var bustcachevar=//bust potential caching of external pages after initial request? (1=yes, 0=no)
    var loadedobjects=""
    var rootdomain="http://"+window.location.hostname
    var bustcacheparameter=""

    function ajaxpage(urlcontainerid){
    var 
    page_request false
    if (window.XMLHttpRequest// if Mozilla, Safari etc
    page_request = new XMLHttpRequest();

    else if (
    window.ActiveXObject){ // if IE
    try {
    page_request = new ActiveXObject("Msxml2.XMLHTTP")

    catch (
    e){
    try{
    page_request = new ActiveXObject("Microsoft.XMLHTTP")
    }
    catch (
    e){}
    }
    }
    else
    return 
    false
    page_request
    .onreadystatechange=function(){
    loadpage(page_requestcontainerid)
    }
    if (
    bustcachevar//if bust caching of external page
    bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
    //alert (url+bustcacheparameter);
    page_request.open('GET'url+bustcacheparametertrue);
    //req.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
    page_request.send(null)
    }

    function 
    loadpage(page_requestcontainerid){
    if (
    page_request.readyState == && (page_request.status==200 || window.location.href.indexOf("http")==-1))
    document.getElementById(containerid).innerHTML=page_request.responseText


    In sostanza cosa dovrebbe fare? Facendo click sul link, dovrebbe settarmi la variabile di sessione e stamparla a video. Ma su firefox le cose vanno in modo "leggermente" diverso.
    Finisce per continuare a stampare più volte quel dato di sessione. Mentre su explorer direi che si comporta in modo quasi corretto.

    Ho provato a settare degli headers per superare l'ostacolo ma niente.
    Qualcuno di voi ha già affrontato questo problema?
    "La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".

  2. #2
    up!
    "La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".

  3. #3
    up
    "La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".

  4. #4
    ciao,
    premetto che non sono un campione di ajax, comunque leggendo il tuo codice mi sembra che tu faccia una chiamata ricorsiva, da cui l'outpu di firefox.

    separa la funzione asincrona dal resto del codice, a parte le dai un nome .php e la memorizzi come script separato a cui farai riferimento nella open.

    Codice PHP:
    session_start();
    header"Expires: Mon, 26 Jul 1997 05:00:00 GMT" );  // disable IE caching
    header"Last-Modified: " gmdate"D, d M Y H:i:s" ) . " GMT" );
    header"Cache-Control: no-cache, must-revalidate" );
    header"Pragma: no-cache" );


    if (
    $_GET['do'] == 'act') {
    $_SESSION['prova'] = 'eeeek!';
    echo 
    $_SESSION['prova'];

    infine usa la chiamata col metodo post così eviti il problema del caching di IE.

    ciao
    sergio

  5. #5

    metodo post

    eh... piacerebbe anche a me utilizzarlo.
    Però sono costretto a usare solo metodi get!
    "La grandezza dell'uomo si misura in base a quel che cerca e all'insistenza con cui egli resta alla ricerca".

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.