Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926

    Aggiornare DIV con contenuto dinamico senza ricaricare la pagina

    dovrei aggiornare il contenuto di un div senza ricaricare l'intera pagina.
    nel div ci dovrebbero essere dei contenuti dinamici, estratti da un database
    che recupera le richieste con i parametri url inviati dal link che chiede l'aggiornamento del div.

    Ho cercato sul forum e avevo trovato una soluzione al mio problema in vecchio posto del 2007 che non mi sembra il caso riesumare che è
    questo

    In pratica ci sono due div affiancati, il quello di destra una serie di voci di menu che una volta
    cliccate devono mostrare il contenuto nel div a sinistra.

    Nell'head della pagina ho inserito questo:
    codice:
    
    
    <script type="text/javascript">
    function createRequestObject() {  
    	var ro;  
    	var browser = navigator.appName;  
    	if(browser == "Microsoft Internet Explorer"){  
    		ro = new ActiveXObject("Microsoft.XMLHTTP"); 
    	} else {  
    		ro = new XMLHttpRequest();  
    	}  
    	return ro;  
    }  
    		 
    var http = createRequestObject();
    var idPageAjax;
    		
    function sndReq(action,id) {
    	idPageAjax=id;
    	http.open('get', action);  
    	http.onreadystatechange = handleResponse;  
    	http.send(null);  
    }  
    		 
    function handleResponse() {
    	if(http.readyState == 4){  
    		var response = http.responseText;  
    		document.getElementById(idPageAjax).innerHTML = response;
    	} else {
    		document.getElementById(idPageAjax).innerHTML = 'Caricamento Dati...';
    	} 
    }
    </script>
    le voci di menu sono impostate in questo modo:

    codice:
    Voce di menu
    il div che dovrebbe ricevere i dati è questo:
    codice:
    <div id="dettaglio_sx" class="dettaglio_sx" ></div>
    la pagina dettaglio.asp contiene il codice che estrai i dati dal database acquisendo il parametro id passato come parametro url e formatta i dati da visualizzare.

    Solo che non funziona, nel senso che non da errore ma cliccando sul meno il div non viene aggiornato.

    Potete darmi delle indicazioni?
    grazie
    Luca
    www.intheweb.it - Internet solutions

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    http.open('get', action, true); <-- aggiungerei true (asincrono) poi verifica con degli alert nella chiamata ajax che tutti gli step siano corretti e che la pagina asp risponda correttamente
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    grazie per i tuoi suggerimenti, domani provo subito.
    per la pagina asp non ci sono problemi, in fase di test non
    deve fare altro che recuperare il parametro ID passato in url e stamparlo a video
    tutta la pagina è questa unica riga
    <%=request.querystring("id")%>

    piuttosto, per il debug del codice javascript, che mi hai detto di inserire degli alert,
    puoi indicarmi come e dove e cosa devo verificare?

    Purtroppo con javascript metto mani solo per modifiche elementari ovvie, non conoscendo questo linguaggio, per cui non so come fare.

    Grazie
    Luca
    www.intheweb.it - Internet solutions

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    debug:
    codice:
    function sndReq(action,id) {
    	idPageAjax=id;
    alert(idPageAjax+' '+action)//verifico id e action corretti
    	http.open('get', action, true);  
    	http.onreadystatechange = handleResponse;  
    	http.send(null);  
    }  
    		 
    function handleResponse() {
    	if(http.readyState == 4){  
    		var response = http.responseText; 
    alert(idPageAjax+' '+response)//verifico id e risposta server   
    		document.getElementById(idPageAjax).innerHTML = response;
    	} else {
    		document.getElementById(idPageAjax).innerHTML = 'Caricamento Dati...';
    	} 
    }
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    perfetto....tutto chiaro
    domani provo e vi faccio sapere
    luca
    www.intheweb.it - Internet solutions

  6. #6
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    eccomi....
    ho provato a fare quanto mi hai indicato ma non succede nulla,
    clicco sul link che dovrebbe richiamare l'aggiornamento del div ma
    non viene mostrato nulla, neppure un alert.

    La pagina richiamata, che si chiama test_contenuto.html
    non contiene altro che questo testo:
    testo di contenuto
    senza null'altro.

    questo è TUTTO il codice della pagina di prova che realizzato per
    testare questo codice:
    codice:
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">
    function createRequestObject() {  
    	var ro;  
    	var browser = navigator.appName;  
    	if(browser == "Microsoft Internet Explorer"){  
    		ro = new ActiveXObject("Microsoft.XMLHTTP"); 
    	} else {  
    		ro = new XMLHttpRequest();  
    	}  
    	return ro;  
    }  
    		 
    var http = createRequestObject();
    var idPageAjax;
    		
    function sndReq(action,id) {
    	idPageAjax=id;
    	http.open('get', action);  
    	http.onreadystatechange = handleResponse;  
    	http.send(null);  
    }  
    		 
    function handleResponse() {
    	if(http.readyState == 4){  
    		var response = http.responseText;  
    		document.getElementById(idPageAjax).innerHTML = response;
    	} else {
    		document.getElementById(idPageAjax).innerHTML = 'Caricamento Dati...';
    	} 
    }
    </script> 
    </head>
    <body>
    <div id="div_dinamico"></div>
    <div>PROVA</div>
    </body>
    Cosa sbaglio?
    grazie
    Luca
    www.intheweb.it - Internet solutions

  7. #7
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Visto che usi la libreria di jquery usa la chiamata ajax.jquery
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  8. #8
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    ovvero? come devo fare?
    non mi interessa come farlo, l'importante è il risultato....
    luca
    www.intheweb.it - Internet solutions

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Esempio veloce
    codice:
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script type="text/javascript">	
    function sndReq(action,id) {
    	$("#"+id).load(action)  
    }   
    </script> 
    </head>
    <body>
    <div id="div_dinamico"></div>
    <div>PROVA</div>
    </body>
    per maggiori dettagli http://api.jquery.com/category/ajax/
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it L'avatar di lucalicc
    Registrato dal
    Sep 2002
    Messaggi
    6,926
    niente....copiato e incollato il codice che mi hai suggerito in un file
    ex novo senza cambiare una virgola, quando clicco sul link
    prova
    non succede nulla.
    Ho letto la guida del comando .load() che mi hai indicato,
    credo di aver capito il funzionamento dello script, cmq abbastanza
    semplice anche per me che non conosco javascript e in effetti
    dovrebbe funzionare, ma non lo fa.
    Il file test_contenuto.html è nella stessa cartella del file test.html
    dello script e lo faccio girare in locale....
    Non so cosa possa essere.....
    grazie per la tua pazienza...
    Luca
    www.intheweb.it - Internet solutions

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.