Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Chiudere connessione ajax?

    Uso ajax per gestire una galleria, in particolare per rilevare il numero di immagini in una cartella, dalla vostra guida leggo che per chiudere la connessione (penso non sia utile tenerla costantemente aperta, giusto?) bisogna fare così:
    codice:
    Per chiudere la connessione con il server, oltre al tipo di contenuti è consigliabile impostare un’altro header dal nome connection e con contenuto pari a close.
    Listato 6. Chiudere la connessione
    // ulteriore header consigliato per richieste get o post
    // da scrivere prima di utilizzare send
    ajax.setRequestHeader(“connection”, “close”);
    
    La mia funzione è:
    codice:
    		
    		function verificaRisposta(){
    
    
    			if (ajax.status==200 && ajax.readyState==4) {
    
    
    				miafunzione;
    				chiudiConnessione();
    				
    			} else if (ajax.status!=200 && ajax.readyState==4) {
    				
    				alert("Si è verificato un errore con il server, si prega di riprovare.");
    				
    			} 
    			
    		}
    
    		function chiudiConnessione(){
    			
    			ajax.setRequestHeader("connection", "close");
    			ajax.send();
    			ajax=null;
    			
    		}
    Ma la console di chrome continua a darmi l'errore:
    codice:
    Uncaught InvalidStateError: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED.
    Dove sbaglio?
    Francesco

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    Ciao, ajax dove l'hai assegnato? hai controllato che esista all'interno della funzione?

  3. #3
    E' una variabile globale
    Francesco

  4. #4
    scusa ma la connessione dove la apri??

  5. #5
    In un altra funzione:
    codice:
    		function inviaDati(){	
    			
    			ajax= new XMLHttpRequest();	
    			var email=document.dati.email.value;
    			var nome=document.dati.nome.value;
    			var oggetto=document.dati.oggetto.value;
    			var messaggio=document.dati.messaggio.value;
    			var dati="email"+"="+escape(email) + "&";
    			dati += "nome" + "=" +escape(nome) + "&";
    			dati += "oggetto" + "=" +escape(oggetto) + "&";
    			dati += "messaggio" + "=" +escape(messaggio);
    			
    			ajax.open("post","mail.php",true);
    			ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
    			ajax.send(dati);
    			
    			ajax.onreadystatechange=verificaRisposta;
    
    
    		}
    Francesco

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    sinceramente non ho mai approfondito la questione, cmq da quanto ne so quando la chiamata è terminata è il browser che chiude la connessione, non c'è bisogno di farlo manualmente. La guida che hai indicato è recente? forse era necessario per i vecchi browser?

  7. #7
    In effetti è del 2006, però mi era stata linkata questa sul sito...
    http://www.html.it/guide/guida-ajax/
    Francesco

  8. #8
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Togli quella chiusura inutile, concetto obsoleto che non funzionava bene comunque perché non tutti i browser riconosco questo comando
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  9. #9
    Ok vabè allora la tolgo e basta, grazie
    Francesco

  10. #10
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    http://en.wikipedia.org/wiki/HTTP_persistent_connection se ti torna utile la connessione si chiude in automatico all'occorrenza.

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.