Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Ajax] problema di velocità caricamento script

    Ciao ragazzi non riesco a venire a capo di una cosa:
    sto creando un modo per settare una variabile di sessione a true nel momento in cui io ho javascript abilitato e a false se non ce l'ho abilitato.

    Per fare ciò ho creato una richiesta asincrona Ajax a un file php così composto:

    Codice PHP:
    $value $_GET["js"];
        if(
    $value!='')
        {
            
    $_SESSION["javaOk"] = $value;
            echo 
    "valore acquisito ";
        }


    echo 
    $_SESSION["javaOk"]; 
    e nel body onload ho richiamato la funzione Ajax che mi richiama questo file e mi assegna il valore 1 se javascript è attivo.

    Effettivamente al caricamento della pagina mi esce scritto "1" e valore acquisito ma poi se nella pagina metto un controllo
    Codice PHP:
            echo 'il valore di session è:'$_SESSION["javaOk"];
                    if(
    $_SESSION["javaOk"] == '')
                        echo
    'Javascript non è abilitato';
                    else
                        echo
    'Javascript Abilitato'
    mi da sempre che $_SESSION è nullo e quindi non è abilitato!! come posso fare??

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    hai messo session_start(); all'inizio dei file php in cui vuoi la sessione?

  3. #3
    ...si l'ho messo....

  4. #4
    posto anche il codice della richiesta ajax

    codice:
    //memorizziamo il riferimento all'oggetto XMLHttpRequest
    var xmlHttp = createXmlHttpRequestObject();
    
    //restituisce l'oggetto XMLHttpRequest
    function createXmlHttpRequestObject() 
    {
    	//memorizziamo il riferimento all'oggetto XMLHttpRequest
    	var xmlHttp;
    	
    	//se l'utente utilizza internet explorer
    	if(window.ActiveXObject)
    	{
    		try
    		{
    			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    		}
    		catch (e)
    		{
    			xmlHttp = false;
    		}
    	}
    	
    	// se utilizza Mozilla o altri browser
    	else
    	{
    		try
    		{
    			xmlHttp = new XMLHttpRequest();
    		}
    		catch (e)
    		{
    			xmlHttp = false;
    		}
    	}
    	
    	//a questo punto restituisce l'oggetto creato o mostra un messaggio di errore dato dalla if qui sotto
    	
    	if(!xmlHttp)
    		alert("Errore durante la creazione dell'oggetto XMLHttpRequest.");
    	else
    		return xmlHttp;
    }
    
    
    
    //Effettuiamo una richiesta asincrona utilizzando l'oggetto XMLHttpRequest
     function process()
     {
    	 //Dobbiamo procedere solo se l'ogetto xmlHttp non è impegnato
    	 if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
    	 {
    	 	var value = 1;
    		//eseguiamo la pagina php ovvero javascript_ok.php sul server
    		xmlHttp.open("GET", "../_script/javascript_ok.php?js=" + value,true);
    		
    		//definiamo il metodo per gestire le risposte del server
    		xmlHttp.onreadystatechange = handleServerResponse;
    		
    		// Effettuiamo la richiesta al server
    		xmlHttp.send(null);
    	 }
    	 
    	 else
    		 //Se la connessione è impegnata allora rproviamo dopo 1 secondo
    		 setTimeout('process()', 1000);
    		 
     }
     
     
      // Eseguita automaticamente quando viene ricevuto un messaggio dal server
      function handleServerResponse()
      {
    	  //Procediamo solo se la transazione è completata
    	  if(xmlHttp.readyState == 4)
    	  {
    		  //lo status 200 indica che la transazione è stata eseguita con successo
    		  if(xmlHttp.status == 200)
    		  {
    			  //estraiamo l'xml ricevuto dal server
    			  var textResponse = xmlHttp.responseText;
    			  			  
    			  //aggiorniamo il client con i dati ricevuti dal server
    			  document.getElementById("javascriptDiv").innerHTML = '' + textResponse + '';
    			  
    			  //riavviamo la sequenza
    			  setTimeout('process()', 1000);
    		  }
    		  
    		  else
    		  {
    			  alert("C'è stato un problema nell'accesso al server:" + xmlHttp.statusText);
    		  }
    	  }
      }
    praticamente io al body onload ho messo process(); di modo che mi richiama lo script php e gli invia il valore..

  5. #5
    il fatto è che a me sembra di aver scritto tutto bene!!! sto diventando matto!
    posto di nuovo il file php che riceve la chiamata asincrona

    Codice PHP:
    session_start();
        if(isset(
    $_SESSION['javaOk']))
            unset(
    $_SESSION['javaOk']);
            
            
    $value=$_GET['js'];
            echo
    'prima dell acquisizione value ha valore'.$value;

        if(isset(
    $_GET['js']))
        {
            
    $_SESSION['javaOk'] = '1';
            echo 
    "valore acquisito ";
        }
        else
        {
            
    $_SESSION['javaOk'] = '0';
        }

    echo 
    $_SESSION['javaOk']; 
    praticamente nella index io richiamo nel body onload il processo che mi esegue la chiamata asincrona e gli invia il valore 1 a questo file php
    se non gli invia niente perchè la chiamata asincrona non parte dovrebbe assegnargli 0 in teoria!!
    ogni volta che avvio la pagina mi da che il valore è 1 e non mi torna mai a 0 come mai?

  6. #6
    Effettivamente stavo pensando che se non lo includo all'inizio della index.php nel caso l'utente non avesse javascript non entrerebbe affatto nel file....
    però se lo includo(con javascript attivo) mi succede questo,mi scrive proprio:

    prima dell acquisizione value ha valore0
    prima dell acquisizione value ha valore1 valore acquisito 1
    il valore di session è: 0 Javascript non è abilitato


    quindi nella sessione non mi ha messo il valore 1!!! me l'ha impostata di nuovo a 0!! ma perchè??

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Sei consapevole che le sension risiedono sul server (php) e che facendo una chiamata ajax tu non aggiorni la pagina pertanto le modifiche saranno disponibili sul client solo dopo aggiornamento, spero si sia capito il concetto, e d'aver capito il problema, altrimenti come non detto.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    un consiglio su come poter realizzare questa cosa allora? mi sembra che tempo fa filippo toso diede un'idea ma il post si era fermato senza alcuna risposta...

    come potrei fare per realizzare ciò che ho in mente?

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Ma il difficile è capire cosa hai in mente!!!
    Nel tuo interesse cerca di spiegare bene e chiaro cosa vorresti fare, e il motivo di tutto ciò per capire se ci potrebbe essere un altra strada.
    In questa fase non postare codice, più tosto metti un disegno (bozza) oppure se l'hai già visto in rete il link al sito.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.