Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: Aggiornare un DIV

  1. #1

    Aggiornare un DIV

    Ciao a tutti !!! Mi sono appena iscritto in quanto ho un piccolo problema...

    Sto programmando in JAVA e sto utilizzando AJAX o meglio dire JSON per alcune funzioni. Ho fatto un login e all'interno della servlet ho inserito il messaggio di ritorno in modo tale da non far aggiornare tutta la pagina !!!. Ho un piccolo problema però...ho un div che dovrei cambiare nel momento in cui eseguo il login. Come posso fare?


    Cioè la mia domanda è, se ho un div con scritto per esempio

    <div>
    ciao
    <\div>

    nel momento in cui eseguo un login e faccio ritornare un messaggio di stampa dalla servlet, come faccio a far aggiornare anche il div? Ho questo problema perchè devo fare apparire il nome della persona che si è loggata. Adesso se faccio aggiornare tutta la pagina il problema non si pone, in quanto automaticamente si aggiorna il div, ma se invece non volessi aggiornar l'intera jsp ma soltanto questo div?


    Grazie in anticipo.

  2. #2
    eh, hai detto che usi AJAX, no? quindi avrai da qualche parte una funzione JS che è legata all'evento onreadystatechange dell'oggetto XMLHttpRequest.

    In quella funzione, lanciata quando fai il login, puoi mettere un'istruzione per aggiornare il div (ti consiglio sempre di mettere un id alle cose che vuoi manipolare):

    codice:
    <div id="ResultLogin">
       Waiting for the Login
    </div>
    Poi, metti di avere l'oggetto JSON di ritorno nella variabile obj, mentre il messaggio da stampare è salvato nella voce result.
    Ti basta aggiungere:
    codice:
    var myDiv = document.getElementById("ResultLogin");
    myDiv.innerHTML = obj.result;
    Questo è sufficiente per modificare il contenuto del div con quello che ti viene ritornato dal server.

    Se vorresti fare una cosa bella, metteresti un altra voce con lo status del login (tipo obj.logged = true o false) in modo da applicare uno stile al div a seconda dei casi (metti la scritta in verde se il login è andato bene e rossa in caso di errore.
    I DON'T Double Click!

  3. #3

    ...

    Ciao intanto grazie per la risposta...comunque uso JSON, con libreria mootools... La chiamata che faccio è questa, nella pagina jsp:


    function verifica(){
    var email = document.getElementById('email').value;
    var password = document.getElementById('password').value;

    //Controllo se i campi vengono inseriti;
    if(email=="" || password==""){
    $('stampa').innerHTML="Tutti i campi sono obbligatori.";

    }else{
    var req = new Request.JSON({url:'login', onComplete: function(j){
    $('stampa').innerHTML=j.messaggio;


    }})
    req.get({'email':email,'password'assword});

    }
    }

    </script>

    e questo è tutto giusto. Mentre nella servlet metto:

    out.println("{\"messaggio\":\"Login eseguito correttamente\"}");

    ok, il messaggio mi viene stampato senza aggiornare la pagina sia del "tutti i campi sono obbligatori", sia del login eseguito correttamente... però oltre al div che mi visualizza questo messaggi:

    <div id="stampa" style="text-align:center;color:red;">

    </div>

    ho anche un altro div

    <div id="prova">

    </div>

    e proprio questo div devo fare aggiornare...

  4. #4
    e devi farlo aggiornare con cosa?
    I DON'T Double Click!

  5. #5

    ...

    si scusa non ho spiegato bene :P supponi che in questo div:

    <div id="prova">
    <%=nome%>
    <\div>

    se non aggiorni la pagina non viene visualizzato il nome...cioè esegui il login, faccio tornare un messaggio di ritorno con scritto login eseguito correttamente, però il nome non viene visualizzato perchè ha bisogno di aggiornare la pagina, adesso non volendo aggiornare tutta la pagina ho messo la gestione della session e il visualizza nome in un div, che sarebbe appunto "prova", quindi devo fare aggiornare soltanto questo div "prova" in modo tale che viene visualizzato il nome del loggato.

  6. #6
    devi creare una JSP che ritorni SOLO il contenuto del div che vuoi caricare (o un JSON con i dati da inserire nel Div), poi fai una richiesta:

    (se per esempio hai la pagina user.jsp che ritorna i dati dell'utente)

    codice:
    //Nella funzione che viene chiamata in caso di login con successo.
    $('prova').load('user.jps');
    N.B. ho dato per scontato che usi mootools1.2 e non 1.11
    I DON'T Double Click!

  7. #7

    ...

    fatto con load...soltanto che non mi carica la pagina...insomma non cambia nulla...

  8. #8
    se l'hai messo nel posto giusto ed il flle che carichi con il load è corretto allora funziona. Prova ad aprire il file nel browser e controlla se funziona correttamente, se si, allora c'è qualcosa nel tuo script di sbagliato.
    I DON'T Double Click!

  9. #9

    ...

    function verifica(){
    var email = document.getElementById('email').value;
    var password = document.getElementById('password').value;
    //Caratteri non validi;
    Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
    if (Filtro.test(email)==false){
    $('stampa').innerHTML="Email formato non valido!";
    }
    //Controllo se i campi vengono inseriti;
    if(email=="" || password==""){
    $('stampa').innerHTML="Tutti i campi sono obbligatori.";
    }else{
    var req = new Request.JSON({url:'login', onComplete: function(j){
    $('ciao').innerHTML=j.messaggio;
    $('ciaoDue').load('prov.jsp');

    //document.getElementById("cambia").style.display = "none";
    }})
    req.get({'email':email,'password'assword});


    }
    }

    questa è la funzione...entra nella servlet login, in '(ciao') mi stampa login effettuato correttamente mentre in ciaDue dovrebbe mettere la pagina prov.jsp giusto?

    in prov.jsp c'è semplicemente:

    <%
    Integer pagina = (Integer) session.getAttribute("pagina");
    entities.utente.Utenti utente = (entities.utente.Utenti) session.getAttribute("utente");
    if (utente == null) {
    %>

    <%}


    else {

    %>

    <%= utente.getNome().toUpperCase()%> <span style="padding-left:60px;">Vuoi vedere il tuo profilo !!! clicca</span> [img]images/utente.jpg[/img] Logout
    <%
    }
    %>

  10. #10
    e se chiami prov.jsp dal browser che ottieni?
    I DON'T Double Click!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.