Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 40
Like Tree3Likes

Discussione: conferma cancellazione

  1. #1
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Question conferma cancellazione

    Salve a tutti. Come da oggetto cerco un modo per chiedere la conferma, prima di eliminare un record.
    Nello specifico ho un FORM che offre queste 3 possibili scelte:
    Codice HTML:
    <select name="scelta" size="1" >
    <option selected value="1">Usa</option>
    <option value="2"> Modifica </option>
    <option value="3"> Elimina </option>
    </select>
    Scegliendo la terza opzione si viene mandati al file php dove viene processato il DELETE.
    Ovviamente funziona, ma volevo sapere se è possibile e come, intervenire su questa opzione prima di cancellare il dato.
    Grazie dell'attenzione

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    https://www.google.it/search?q=form+confirm+on+submit

    Ovviamente si tratta di js, che funziona solo se il visitatore ce l'ha attivo.

    Ciao!
    Ultima modifica di alemoppo : 07-03-2015 alle ore 17.59.09

  3. #3
    portier non è connesso Utente
    Data registrazione
    07-06-2014
    Messaggi
    127

    Predefinito

    OK. Grazie mille. Ho risolto. Buona domenica. Ciao

  4. #4
    Guest

    Predefinito

    Confirm restituisce true se premi ok e false se premi annulla

    Codice HTML:
           	<form>
           	    <input id="elimina" type='submit' value='Elimina' onclick="Conferma_eliminazione();"/><br/><br/>
            </form>
    Codice:
    <script type="text/javascript">
    function Conferma_eliminazione(){
    	
    	var domanda = confirm("Sei sicuro?");
    	
    	if (domanda==true){
    		alert('Hai cancellato');
    		return;
    	}
    	else{
    		alert('Non hai cancellato');
    		return;
    	}
    }
    </script>
    Ultima modifica di fractalcosmo : 08-03-2015 alle ore 01.19.25

  5. #5
    tecadonpiero non è connesso Neofita
    Data registrazione
    10-02-2015
    Messaggi
    10

    Predefinito

    Grazie a tutti.
    Ho seguito i vari suggerimenti, in particolare quello di fractalcosmo.
    Ho bisogno però che il FORM abbia queste caratteristiche per eliminare il record:
    Codice PHP:
    <form action="elimina_autore.php" method="POST">
    <
    input type="hidden" name="ida" value="'.$autore .'"/>
    Per eliminare questo autore premi sul bottone. &nbsp; &nbsp; &nbsp;
    <
    input id="elimina" type="submit" value="Elimina" onclick="Conferma_eliminazione();"/><br/><br/>
    </
    form>
    Il problema adesso è che, anche se scelgo ANNULLA nell'avviso, mi cancella comunque il record.
    Pensavo di aver risolto.
    Invece provando mi sono accorto appunto che si cancella il dato in ogni caso e l'avviso di sicurezza è innutile.
    Grazie e scusate la svista.

    P.S. ho cambiato l'alias per questo messaggio.
    Ultima modifica di tecadonpiero : 08-03-2015 alle ore 07.38.18

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Se avessi aperto il mio link, avresti visto la soluzione del tipo:

    Codice HTML:
    <form onsubmit="return confirm('Sei sicuro?')">

    In ogni caso, lo script postato da fractalcosmo dovrebbe essere così per funzionare:
    Codice:
    function Conferma_eliminazione(){
    	
    	var domanda = confirm("Sei sicuro?");
    	
    	if (domanda==true){
    		alert('Hai cancellato');
    		return true;
    	}
    	else{
    		alert('Non hai cancellato');
    		return false;
    	}
    }
    Con:
    Codice HTML:
    <form onsubmit="return Conferma_eliminazione()">
    Anche se non mi sembra una buona cosa confermare la cancellazione prima dell'effettiva cancellazione dei dati: i messaggi "non hai cancellato" e soprattutto "hai cancellato" andrebbero mostrati quando effettivamente si è sicuri che il dato è stato eliminato, lato server.

    Ciao!

  7. #7
    Guest

    Predefinito

    Allora ti faccio un piccolo esempio, comunque la logica è abbastanza semplice, quando chiami la funzione conferma_eliminazione, imposti prima la domanda con il confirm poi se ritorna true fai partire la cancellazione inviando i dati alla pagina che effettua la cancellazione in php altrimenti ritorni nella schermata base, quindi la logica è:

    Se il ritorno della confirm è true faccio la chiamata ajax e invio i dati alla pagina di eliminazione
    Se il ritorno è false non faccio nulla e ritorno alla pagina base
    Un esempio di chiamata può essere quello sotto, poi ovviamente potresti mettere una dialog ad avvenuta ccancellazione, ti ci diverti un pò tu...Il type dell'html questa volta sarà BUTTON non submit, facciamo tutto da ajax....Al posto del valore di ida o messo un ciao ovviamente devi inviare anche quello in get....Quindi codice html:

    Codice HTML:
    <form method="get" action="elimina_autore.php">
    
      <input type="hidden" name="ida" value="ciao" id="ida"/>
      Per eliminare questo autore premi sul bottone.  &nbsp; &nbsp; &nbsp;  
     <input id="elimina" type="button" value="Elimina" onclick="Conferma_eliminazione();"/><br/><br/>
    
    </form>  
           
    Codice:
    
    <script type="text/javascript">
    function Conferma_eliminazione(){
    	
    	var domanda = confirm("Sei sicuro?");
    	
    	if (domanda==true){
            
            //recupero il valore di IDA
    
    	ida = $('#ida').val();		
           
            //Faccio la chiamata in get 
            $.get('elimina_autore.php', {
                ida:ida
             }, function(response){
    	                //invio i dati alla pagina elimina autori e gli passo i parametri in get
    	            	window.location = "elimina_autore.php?ida=" + ida + "&="; }
             );
    	}
    	else{
    		alert('Non hai cancellato');
    		return;
    	}
    }
    </script>

    nella pagina di eliminazione_autore.php avremo il nostro codice che si occuperà della cancellazione dell'autore adesso io ti mostro come procedi poi il codice per la cancellazione lo sai tu... ;) ciao

    elimina_autore.php

    Codice PHP:


    <?php
    //se ida è selezionato allora inoltro la cancellazione, posso anche controllare che ida abbia un autore valido a questo punto
    if (isset($_GET['ida'])){
    $ida = $_GET['ida'];
    print
    "hai cancellato : " .$ida;
    }

    ?>
    Una cosa importante che può portare a fraintendimenti è che nella soluzione che ti ho postato non hai bisogno di mettere nel form il method e l'action perchè stai facendo tutto da ajax quindi il type del button sarà BUTTON e non SUBMIT, submit lo usi quando non stai usando ajax ma se usi ajax submit non va bene.
    quindi puoi fare

    Codice HTML:
    <form>
    
      <input type="hidden" name="ida" value="ciao" id="ida"/>
      Per eliminare questo autore premi sul bottone.  &nbsp; &nbsp; &nbsp;  
     <input id="elimina" type="button" value="Elimina" onclick="Conferma_eliminazione();"/><br/><br/>
    
    </form>  
           
    nel get dello script il primo url potresti anche passarglielo a stringa vuota a dire il vero però per esempio se vuoi fare dei controlli tipo CONVALIDA_DATI potrebbe risultare utile perchè in convalida dati fai le tue analisi dei dati e nel response potresti impostare uno switch dei CASE in base ai dati che ricevi quindi se il case è OK allora invii altrimenti apri dialog tipo autore non presente etc...etc...

  8. #8
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Ci sono un po' di cose che non capisco:
    • Perché scomodare jQuery per una semplice chiamata ajax?
    • Stai utilizzando ajax immagino per evitare di ricaricar la pagina. Come mai però come callback alla $.get esegui window.location? Cioè, dopo aver inviato i dati alla pagina via get tramite ajax, la richiami una seconda volta inviando ancora i dati via get però in modo "tradizionale"?
    • Cosa succede se l'utente non ha javascript attivo?

    Secondo me la cosa migliore è semplicemente:

    Codice HTML:
    <form onsubmit="return funzione()">
    Dove in funzione() al più si può inviare la richiesta ajax (oltre a richiedere la conferma, ovviamente) e ritornare sempre false. In questo modo sono supportati anche gli utenti senza javascript abilitato.

    Ciao!
    Ultima modifica di alemoppo : 08-03-2015 alle ore 20.06.57

  9. #9
    Guest

    Predefinito

    Javascript lo hai sempre, se entri in un sito e fai una prenotazione online o un acquisto hai javascript, tutti i browser hanno javascript attivi, come php attivi, jquery è meglio a mio avviso che javascript per alcune funzionalità è più comodo a scriverlo...
    Comunque tornando a noi, un esempio di quello che volevo intendere per convalida autore è il seguente....In questo caso valutiamo che ida è vuoto possiamo ovviamente valutare tutti i casi di cui abbiamo bisogno, inseriamo un php che chiameremo convalida_autore.php
    la input non è hidden ma text ovviamente

    Codice HTML:
    <form>
    <input type="text" name="ida" value="" id="ida"/>
    Per eliminare questo autore premi sul bottone.  &nbsp; &nbsp; &nbsp;  
    <input id="elimina" type="button" value="Elimina" onclick="Conferma_eliminazione();"/><br/><br/>
    		<div id="dialog" title="Attenzione"> </div>
    </form>  
    Codice:
    
    <script type="text/javascript">
    function Conferma_eliminazione(){
    	
    	var domanda = confirm("Sei sicuro?");
    	
    	if (domanda==true){
    
    		ida = $('#ida').val();		
            $.get('convalida_autore.php', {
                ida:ida
             }, function(response){
    	           switch(response){
    	           	  case ('IDA_VUOTO'):
    	           	   alert("Inserisci l'autore");
    	           	   return;
    	           	  case ("OK"):
    	           	   window.location = "elimina_autore.php?ida=" + ida + "&="; 
    	           	   }
    	           }
    	            	
             );
    	}
    	else{
    		alert('Non hai cancellato');
    		return;
    	}
    }
    </script>
    convalida_auotre.php

    Codice PHP:


    <?php


    if (trim($_GET["ida"])==""){
    echo
    "IDA_VUOTO";
    exit;
    }

    if (isset(
    $_GET['ida'])){
    $ida = $_GET['ida'];
    echo
    "OK";
    exit;
    }

    ?>

    la nostra pagina di elimina_autore....OVVIAMENTE puoi fare tutto da convalida_autore....questo esempio però va benissimo per una form di login dove devi reindirizzare al login...Però nel case OK puoi fare quello che vuoi, con questo esempio diciamo che ti muovi liberamente nei controlli e invio dati da pagina a pagina...

    Codice PHP:


    <?php

    $ida
    = $_GET['ida'];
    print
    "hai cancellato : " .$ida;

    ?>

  10. #10
    Guest

    Predefinito

    Alemoppo anche jquery lo hai attivo basta che lo inserisci nell'html e tutti quelli che entreranno avranno attivo JQUERY , certo ci sono delle problematiche tra browser e browser, infatti bisogna sempre testare perchè alcuni parametri vengono ripresi meglio da firefox che da explorer però jquery basta inserirlo e lo hai nel sito....javascript è sempre presente perchè è unito al browser, lo script è riconosciuto da tutti i browser....Jquery è molto utile, in qualsiasi sito di prenotazione tipo biglietti dei treni, quello è tutto jquery ;) ma è molto più comodo a scrivere con jquery che con javascript...Ciao

  11. #11
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    javascript non è sempre attivo, come puoi vedere le statistiche nel link che ti ho lasciato sopra.
    PHP è ovviamente sempre attivo perché viene eseguito lato server.

    Non ho capito però i primi due punti che ti ho lasciato: jQuery per una semplice chiamata ajax? (inoltre devi includerlo, altrimenti non funzionerà mai); perché utilizzi window.location ?

    EDIT:

    non dico di non usare ajax: anche a me piacciono le pagine fatte con ajax. Dico soltanto di rendere lo script funzionante anche per chi non ha javascript attivo: dopotutto è molto semplice farlo.

    Ciao!
    Ultima modifica di alemoppo : 08-03-2015 alle ore 20.41.43

  12. #12
    Guest

    Predefinito

    Alemoppo, secondo me ti stai confondendo, javascript è inserito nel sito appena scrivi <script type="text/javascript"> </script> il linguaggio di scripting è la base di invio dati lato server e lato client, javascript è integrato in tutti i browsers, secondo me ti confondi con JAVA che sono due cose diverse, javascript è sempre attivo, non ho letto bene quel link che mi hai postato ma molti dicono anche delle cavolate, java è una cosa javascript ne è un'altra, jquey invece è una libreria di javascript che si usa molto spesso nell'invio dei dati, ajax è molto più comodo usarlo con jquery che con javascript altrimenti hai da scrivere dei papiri e tener conto di XMLHttpRequest...
    L'esempio che ho mostrato serve a far capire come avviene il passaggio di parametri lato client e lato server, nel nostro caso il controlla_autore esegue tutte le operazioni da controllare, cioè autore vuoto, autore assente oppure autore presente, il window location è superfluo ma io l'ho lasciato per far vedere come si imposta il passaggio dei parametri scrivendo la stringa dell'url.

    Buona norma per questo esempio che ci ha dato piero è quella di testare nella convalida_autore se i dati inseriti nella input sono corretti quindi abbiamo tre response che sono

    AUTORE VUOTO(INPUT VUOTA)
    AUTORE ASSENTE(apro la connessione al db scorro la tabella autori e vedo se l'autore digitato è presente oppure no)
    AUTORE PRESENTE(apro la connessione al db, l'autore inserito è presente procedo con la cancellazione)

    In questo modo nel nostro responde avremmo tre alert, uno autore assente, uno autore errato, uno CANCELLAZIONE ESEGUITA correttamente.
    Dato che piero aveva detto di usare una pagina elimina_autore l'esempio è calzante.
    Si procede sempre in questo modo per controllo ed invio dati.
    Se vuoi fare chiamate per dati inseriti e ricevuti lato server e client devi usare ajax e javascript altrimenti non puoi.Non ci sono altri modi.

    Per includere jquery che problema c'è, scarichi jquery e lo inserisci nell'header, chi usa javascript usa anche jquery perchè sei tu che lo includi.....Comunque se uno naviga in internet javascript lo deve avere se no come fa.... :) non vede niente....ciao
    Ultima modifica di fractalcosmo : 08-03-2015 alle ore 21.36.01

  13. #13
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    Alemoppo, secondo me ti stai confondendo, javascript è inserito nel sito appena scrivi <script type="text/javascript"> </script> il linguaggio di scripting è la base di invio dati lato server e lato client, javascript è integrato in tutti i browsers, secondo me ti confondi con JAVA che sono due cose diverse,
    Conoscendo sia javascript sia java, so benissimo la differenza.

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    javascript è sempre attivo, non ho letto bene quel link che mi hai postato ma molti dicono anche delle cavolate,
    Non è vero che javascript è sempre attivo.

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    jquey invece è una libreria di javascript che si usa molto spesso nell'invio dei dati, ajax è molto più comodo usarlo con jquery che con javascript altrimenti hai da scrivere dei papiri e tener conto di XMLHttpRequest...
    Cosa assomiglia di più ad un papiro: una XMLHttpRequest
    Codice:
    function createXMLHttpRequest() {
      req = false;
    // branch for native XMLHttpRequest object
      if(window.XMLHttpRequest) {
        try {
          req = new XMLHttpRequest();
        } catch(e) {
          req = false;
        }
    // branch for IE/Windows ActiveX version
      } else if(window.ActiveXObject) {
        try {
          req = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
          try {
            req = new ActiveXObject("Microsoft.XMLHTTP");
          } catch(e) {
            req = false;
          }
        }
      }
      return req;
    }
    oppure l'intera libreria jQuery? Alla fine jQuery è soltanto una libreria, e deve ugualmente utilizzare XMLHttpRequest per tali richieste.


    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    il window location è superfluo ma io l'ho lasciato per far vedere come si imposta il passaggio dei parametri scrivendo la stringa dell'url.
    Non è superfluo: nell'ultimo tuo script serve ad eliminare i dati. Nel tuo script iniziale invece faceva la stessa cosa della chiamata ajax. Perché non utilizzare ajax anche per eliminare i dati?


    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    Se vuoi fare chiamate per dati inseriti e ricevuti lato server e client devi usare ajax e javascript altrimenti non puoi.Non ci sono altri modi.
    Un altro modo, supportato anche da chi non ha javascript attivo sarebbe questo:
    Codice HTML:
    <form action="pagina.php" method="get">
    <!---vari input
    <input type="text" name="nome1"> 
    -->
    <input type="submit" name="invio" value="invia">
    </form>

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    Per includere jquery che problema c'è, scarichi jquery e lo inserisci nell'header, chi usa javascript usa anche jquery perchè sei tu che lo includi....
    jQuery è un papiro; non le dieci righe per l'oggetto XMLHttpRequest.


    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    Comunque per firefox ad esempio non è più possibile disabilitare javascript era possibile fino a pochi anni fa, poi si sono accorti che è meglio non disabilitarlo,
    Ah, e come spieghi le mie impostazioni? (sto navigando con l'ultima versione di firefox).



    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    Comunque se uno naviga in internet javascript lo deve avere se no come fa.... :) non vede niente....ciao
    In realtà fino qualche tempo fa io navigavo senza js. Conosco altre persone che lo avevano disabilitato e navigavamo benissimo nei siti fatti decentemente.


    E comunque mi ri-quoto:

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    non dico di non usare ajax: anche a me piacciono le pagine fatte con ajax. Dico soltanto di rendere lo script funzionante anche per chi non ha javascript attivo: dopotutto è molto semplice farlo.

    Ciao!
    Ultima modifica di alemoppo : 08-03-2015 alle ore 21.56.30

  14. #14
    Guest

    Predefinito

    Guarda alemoppo io non voglio fare polemica ehh ci mancherebbe, secondo me tra il tuo script e il mio è molto meglio il mio a livello di programmazione e gestione dati, anche se devi usare json per l'invio di tanti dati, io a lavoro tutti i giorni gestisco milioni di dati se dovessi farlo con javascript diventerei scemo, con jquery ci metto due secondi :D
    Comunque io non voglio controbbattere, usa quello che vuoi ci mancherebbe, ribadisco javascript è sempre attivo certo se uno lo disabilita amen, ma allora spegne il computer e va a casa :D
    Se usi PHP devi usare javascript se no come facciamo ad inviare dati?Dai su, sembra che vuoi solo far polemica, scusa se te lo dico.
    Il windows location è superfluo ribadisco perchè la cancellazione si fa dal convalida_autore, è lì che fai la cancellazione dell'autore e i controlli, quello è il lato server, non bisogna aprire nessuna altra pagina....Comunque l'importante è che piero riesca nel suo intento poi tu usa javascript e basta che ti devo dire?
    Io ti assicuro dato che lavoro in PHP e Javascript e html e faccio gestione dati aziendali e delle volte mi scontro con codice scritto da altri, lunghi 3 km mentre con jquery scrivi 4 caratteri e hai fatto tutto.... :D
    Ciao

    Ps:Non esiste che se tu disabiliti JAVASCRIPT entri in un sito e fai passaggio dati alemoppo, scusa ma che lavoro fai? no perchè io sono analista e sviluppatore software in php e c#...ti assicuro che se disabiliti javascript con php non vai lontano...

  15. #15
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Beh, ovviamente nemmeno io voglio far polemica ... Anzi lo scopo è imparare cose nuove (visto che circa tutto quello che so l'ho imparato proprio da questo forum).

    Soltanto che non capisco le cose che ti ho chiesto.
    Ovviamente praticamente tutti hanno js abilitato, ma non il 100% dei visitatori. Perché? Ad esempio qui trovi un po' di motivi (primo link trovato googlando).
    Si possono benissimo inviare dati senza javascript, tramite form o semplicemente tramite url.

    Ora, come detto sopra visto che sono qui per imparare:
    secondo me tra il tuo script e il mio è molto meglio il mio a livello di programmazione e gestione dati
    Perché?
    Posso capire per la leggibilità del codice, e comunque un codice scritto con l'XMLHttpRequest risulta circa come uno jQuery: il sorgente per creare l'oggetto vero e proprio ok, è un po' lunghino (per intenderci quello che ho riportato sopra), ma quello è come se fosse una libreria (proprio come jQuery, solo un pelo più corta ).

    Codice:
    var req = createXMLHttpRequest();
    req.open('GET', 'pagina.php?' + parametri, true);
    
    req.onreadystatechange = function() {
      if (req.readyState == 4) {
        if (req.status == 200) {
            //finito correttamente!
        }
      }
    }
    vs:

    Codice:
    $.get("pagina.php", function(data, status){
            //finito correttamente!
        });
    Non mi sembrano così diversi.

    La domanda quindi è: a parte la leggibilità e/o eventuali altre maggiori compatibilità, quali vantaggi ci sono? Perché è meglio il tuo codice? Perché non usare un semplice form scritto seguendo gli standard e poi per chi ha js attivo utilizzare ajax?

    Ciao!
    Ultima modifica di alemoppo : 08-03-2015 alle ore 23.28.30

  16. #16
    Guest

    Predefinito

    Allora, io parto dal presupposto che parliamo di "GESTIONE DATI" non di semplici siti dove inserire articoli o immagini, quindi si parla di gestione dati, chiamate "asincrone" e via discorrendo, AJAX vuol dire letteralmente Asynchronoux javscript e xml, una chiamata asincrona permette lo scambio di dati lato client e lato server senza il bisogno di ricaricare la pagina, a questo punto quando invochi una chiamata sei in grado di gestirla interamente lato client, la furberia di jquery è la grandiosa possibilità di gestire tutta la chiamata, quindi il success, l'error, oltre che ovviamente i tipi di dati e tante altre cose, la varietà di metodi usati grazie ad JQUERY sono tantissimi e personalizzabili, JQUERY è un'estensione di javascript e permette inoltre(da notare che io non so assolutamente tutte le possibilità e i metodi che ci sono in jquery, molte volte sono nelle API a leggere e imparo cose nuove)la gestione di EVENTI, proprio al fine delle chiamate asincrone.
    Con JQEURY e i vari metodi di EVENT puoi gestire TUTTA LA CHIAMATA, ajaxcomplete, beforesend, ajaxstart.
    Con jquery e i suoi numerosi metodi puoi analizzare il DOM in maniera molto più completa e semplice.
    Jquery non serve solamente a fare siti dinamici o semplicemente css ed effetti grafici o animazioni ma veramente ti assicuro che nella gestione delle chiamate è l'unico che ti permette di essere al 100% funzionale.
    Oltre che essere più veloce nelle chiamate e nella risposta.
    Dovendo gestire dati, quindi lato client, perchè non interveniamo nel server ogni volta no?prima gestiamo il DOM poi se tutto va bene invocheremo le chiamate lato server e lato server convalideremo i dati, la gestione parte dal basso e jquery permette proprio questo.
    Spero di essere stato abbastanza chiaro, poi ti ripeto io purtroppo devo anche analizzare codice scritto da altri e molte volte mi trovo davanti a codice che poteva essere gestito meglio solamente se avessero usato JQUERY.

    L'esempio del semplice get che ho messo prima è proprio la chiamata asincrona alla pagina convalida_autore...potrebbe essere convalida_login...o qualsiasi altra cosa che serve ai nostri scopi...prima di chiamare il server in modo asincrono, controllo valuto e gestisco...infatti il convalida_autore avviene al di sotto.
    Ultima modifica di fractalcosmo : 08-03-2015 alle ore 23.53.38

  17. #17
    Guest

    Predefinito

    Per esempio Piero ha detto una cosa, ehhh mi calcella ugualmente l'autore, quindi forse l'alert non serve, NOOOOO fermi tutti, deve gestire gli eventi, ad esempio con jquery abbiamo event.preventDefault() che fa proprio questo gestisce e previene l'evento di default, io non l'ho inserito nel codice ma si può tranquillamente mettere un event.preventDefault() e se tutto va bene event.isDefault()...Questa gestione degli eventi....ehhh ce l'hai con jquery...L'utilità è veramente impressionante, ma anche nello scambio di grosse quantità di dati...usando JSON.

  18. #18
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Beh, onreadystatechange serve appunto per tutti gli eventi che jQuery chiama ajaxstart, ajaxcomplete, beforesend, etc.

    Tutto quello che si può fare con jQuery è possibile farlo con javascript, visto che non è altro che una libreria scritta appunto interamente in js.

    Ovviamente se parliamo di applicazioni client-side è ovvio che si è costretti ad usare javascript, altrimenti non avrebbe senso parlare di applicazione.

    Io sto chiedendo in questo caso, perché è meglio fare:

    Codice HTML:
    <form>
    <input type="text" name="ida" value="" id="ida">
    <input id="elimina" type="button" value="Elimina" onclick="Conferma_eliminazione();">
    </form>
    Invece di:

    Codice HTML:
    <form action="elimina_autore.php" method="GET" onsubmit="return Conferma_eliminazione()">
    <input type="text" name="ida" value="" id="ida">
    <input id="elimina" type="submit" value="Elimina">
    </form>
    Se vogliamo usare ajax, oppure rispondendo alla richiesta di portier, secondo me la soluzione migliore (che ho proposto) è:

    Codice HTML:
    <form action="elimina_autore.php" method="GET" onsubmit="return confirm('Sei sicuro?')">
    <input type="text" name="ida" value="" id="ida">
    <input id="elimina" type="submit" value="Elimina">
    </form>
    Cioè, negli ultimi due modi il form è scritto rispettando gli standard, sono compatibili con i visitatori che non hanno javascript attivo. Non vedo controindicazioni.

    EDIT:

    Vedo solo ora la tua seconda risposta.

    Sì, cel'ho con jQuery . O meglio, io lo utilizzo, sia chiaro, ma solo quando necessario. Sicuramente non vado a includere una libreria di centinaia di kb per fare una richiesta ajax!!

    Ciao!
    Ultima modifica di alemoppo : 09-03-2015 alle ore 00.09.46

  19. #19
    Guest

    Predefinito

    No, non ci siamo onreadystateChange non gestisce ad alto livello, stai gestendo solamente a basso livello, non hai delle callback e non hai gestione dei dati, cioè in poche parole entrano forzano e fanno quello che vogliono..... :D
    con un submit chiami sempre la pagina elimina_autori....NO io non la voglio chiamare io voglio prima di tutto controllare i dati inseriti sono io a validare i dati mi serve una callback asincrona.e questo che non ti entra in testa :D
    Forse non capisci l'utilità perchè non devi gestire chiamate asincrone...ti assicuro che l'onreadystatechange è troppo limitato ed è proprio per questo che è stato superato con ajax-jquery.
    Ultima modifica di fractalcosmo : 09-03-2015 alle ore 00.25.32

  20. #20
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Beh, con il metodo "2" puoi fare tutto quello che dici (volendo si può utilizzare anche il famigerato jQuery), e in più c'é il supporto per chi non ha javascript.
    Senza contare che comunque tutti i controlli lato server vanno fatti in ogni caso.

    Ciao!
    Ultima modifica di alemoppo : 09-03-2015 alle ore 00.30.03

  21. #21
    Guest

    Predefinito

    Scusa alemoppo, ma forse non ci capiamo, tu stai usando un confirm....confirm siamo punto a capo non c'entra niente in questo discorso, io parlo di cavoli tu di pere, confirm apre la dialog punto se premi ok ritorna true se no ritorna false, cosa c'entra con le chiamate asincrone e la gestione dei dati?
    Ma devi studiarti un pò di invio dati e chiamate sincrone e asincrone, con questo ti saluto.
    Ciao

  22. #22
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Per codice "2" intendo questo:

    Codice HTML:
    <form action="elimina_autore.php" method="GET" onsubmit="return Conferma_eliminazione()">
    <input type="text" name="ida" value="" id="ida">
    <input id="elimina" type="submit" value="Elimina">
    </form>
    Non ci sono confirm, o comunque possono essere inserite dentro la funzione Conferma_eliminazione(). Però è funzionante anche con chi non ha js abilitato.

    Ciao!
    Ultima modifica di alemoppo : 09-03-2015 alle ore 00.39.56

  23. #23
    Guest

    Predefinito

    Ma allora o parlo cirillico o cinese, stai mettendo un php dentro l'html stai facendo una semplice gestione in get con un return che messo in quel modo non serve a niente, io di solito quando mi dicono le cose ascolto invece di fossilizzarmi sul mio modo di pensare, il return non serve...Piero ha detto chiaro e tondo che gli fa lo stesso l'eliminazione, sai cosa vuol dire questo?
    che a lui serve gestire l'evento al click del bottone un modo può essere il seguente:

    Codice:
            $('#idBottoneElimina').click(function(event)
            {
                  ida=$('#ida').val();
    
                  if (ida == false){
                      event.preventDefault();
                      alert('inserire autore');
                  }
                  //Se i controlli sono ok avvia l'evento di default cioè l'eliminazione
                  else{
                      event.isDefault();
                    }
    
             });
    Tornando a noi siamo sempre punto a capo, non si inserisce un codice php dentro l'html nella mia opinione, si gestisce tutto ad alto livello con ajax, tra l'altro tu non stai facendo nessun controllo, io da come hai scritto tu a parte in return che non serve a niente, posso scrivere anche AUTORE PIPPO, non fai controlli dei dati lato client e chiami sempre il server a qualsiasi valorizzazione del dato, non si programma così....Ecchecavolo....ripeto studiati le chiamate sincrone e asincrone, studiati l'invio dati e sappi che il tuo famigerato xmlhttprequest non fa altro che gestire questi stati

    0 = non inizializzato, 1 = aperto, 2 = richiesta inviata, 3 = risposta in ricezione e 4 = risposta ricevuta.

    Questi NON SONO GLI EVENTI di gestione delle chiamate ajax in base ai dati inviati, questo xmlhttprequest di BASSO livello ti dice solamente come è andata la chiamata...PUNTO....Ma orca loca ma parlo cinese :D
    Con jquery gestisci invece gli eventi di invio e manipoli gli eventi cosa che non puoi fare con javascript di basso livello, non a caso hanno creato delle librerie in più tipo JQUERY, qualsiasi sito di inserimento dati e manipolazione dati ha bisogno di javascript altrimenti come manipoli il lato client??
    Qui non hai bisogno ma mica devi inserire dati sensibili in un forum.
    Ma orca loca ma ascolta invece di fissarti sulle tue idee che forse ci impari qualcosina.Ciao
    Ultima modifica di fractalcosmo : 09-03-2015 alle ore 01.37.52

  24. #24
    karl94 non è connesso Staff AV
    Data registrazione
    03-10-2005
    Messaggi
    17,744

    Predefinito

    Ma io son d'accordo con Alemoppo, anche se non del tutto. La sua soluzione segue i principi del progressive enhancement, cioè funziona di base anche con un browser che supporta anche solamente HTML4, poi se c'è JavaScript a disposizione lo usa.
    Come funziona? Semplicemente si "attacca" all'evento submit del modulo, ossia prima che il modulo venga inviato viene eseguito qualcosa, nel nostro caso viene chiesta la conferma all'utente di una determinata azione (questa cosa magari poi è da discutere per quanto riguarda l'user experience).
    La cosa che non mi garba troppo è l'uso dell'attributo onsubmit, io prediligerei i listener aggiunti con l'apposito metodo addEventListener.
    Per fare poi il tutto nel miglior modo possibile, dentro il listener bisognerebbe anche modificare il modulo ne caso l'utente confermi l'eliminazione, in modo da permettere allo script PHP che ne riceve i dati di capire se l'utente ha effettivamente confermato un qualcosa.
    Supponiamo infatti che l'utente non abbia supporto a JavaScript, o lo script non venga caricato correttamente, o che ci sia un qualsiasi altro problema con lo script che impedisca l'esecuzione del listener e che quindi il modulo venga inviato senza che venga chiesto nulla all'utente. In questo caso se non si usassero i dovuti accorgimenti lo script PHP eseguirebbe l'azione direttamente. Se invece si usasse come accorgimento l'aggiunta (dinamica, da parte di JavaScript) di un elemento input di tipo hidden che testimoni la conferma da parte dell'utente, si potrebbe evitare questo tipo di problema. Non solo, se lo script PHP identifica la mancanza di questa informazione non dovrebbe segnalare errori o fare altre cose strane, ma semplicemente presentare una pagina dove viene chiesta conferma manualmente all'utente. In questo modo si possono gestire in maniera corretta anche gli utenti che non hanno supporto a JavaScript.
    Infine vorrei precisare a Fractalcosmo che il metodo preventDefault non fa parte né di JQuery (magari fornirà un qualche polyfill, ma di sicuro non è nato da lì) né di JavaScript: è infatti definito dal DOM. E anche con l'oggetto XMLHttpRequest si possono usare tranquillamente gli eventi "moderni" come load, loadend, error e abort.

    Ecco, adesso valutiamo l'aspetto dell'UX: alle volte è dannoso presentare all'utente una conferma di questo tipo, specialmente se l'azione da confermare deve venire effettuata un numero elevato di volte. In questi casi l'utente infatti tende a meccanizzare l'intero processo di: attivazione del pulsante per effettuare l'azione, conferma dell'azione. Rendendo quindi la conferma quasi un riflesso incondizionato, e dunque inutile nel caso in cui per automatismo si confermi un'azione che in realtà non si vorrebbe effettuare.
    Le azioni che vengono effettuate spesso non dovrebbero quindi usare questo metodo, ma fornire qualcosa di più intelligente e meno fastidioso per l'utente. Per esempio una soluzione potrebbe essere quella di fornire all'utente la possibilità di annullare l'ultima azione eseguita, è una strategia di cui si può trovare esempio nell'interfaccia web di Gmail.
    Un altro suggerimento riguardo le conferme è il seguente: nel caso di azioni i cui effetti potrebbero essere molto dannosi, una buona idea per chiedere una conferma all'utente che non possa venire fornita con leggerezza è quella di costringere l'utente a scrivere un testo ben determinato. Per esempio se si tenta all'interno di un sistema Debian di disinstallare un pacchetto di sistema importante viene richiesto di digitare il seguente messaggio:
    So che si tratta di una pessima idea
    Ultima modifica di karl94 : 09-03-2015 alle ore 02.33.46
    alemoppo likes this.

  25. #25
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    stai mettendo un php dentro l'html
    ...
    Tornando a noi siamo sempre punto a capo, non si inserisce un codice php dentro l'html nella mia opinione,
    Dove ho scritto del codice PHP?

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    il return non serve...Piero ha detto chiaro e tondo che gli fa lo stesso l'eliminazione, sai cosa vuol dire questo?
    Certo: significa che non ha gestito l'evento onsubmit del form!.

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    che a lui serve gestire l'evento al click del bottone un modo può essere il seguente:
    Io direi che a lui serve gestire l'evento all'invio del form.

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    tra l'altro tu non stai facendo nessun controllo, io da come hai scritto tu a parte in return che non serve a niente,
    Ah il return non serve?
    Prova questo:
    Codice HTML:
    <!doctype html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title> test </title>
    <script type="text/javascript">
    function Conferma_eliminazione()
    {
    	return false; //non faccio mai inviare il form. Però nell'onSubmit non viene ritornato questo "false", quindi il form verrà inviato comunque.
    }
    </script>
    </head>
    <body>
    <form action="elimina_autore.php" method="GET" onsubmit="Conferma_eliminazione()">
    <input type="text" name="ida" value="" id="ida">
    <input id="elimina" type="submit" value="Elimina">
    </form>
    </body>
    </html>
    E poi prova questo:
    Codice HTML:
    <!doctype html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title> test </title>
    <script type="text/javascript">
    function Conferma_eliminazione()
    {
    	return false; //non faccio mai inviare il form.
    }
    </script>
    </head>
    <body>
    <form action="elimina_autore.php" method="GET" onsubmit="return Conferma_eliminazione()">
    <input type="text" name="ida" value="" id="ida">
    <input id="elimina" type="submit" value="Elimina">
    </form>
    </body>
    </html>

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    posso scrivere anche AUTORE PIPPO, non fai controlli dei dati lato client e chiami sempre il server a qualsiasi valorizzazione del dato, non si programma così....Ecchecavolo....
    Uhm, e quindi vorresti dire che quando fai una chiamata ajax, non richiami il server?

    Per la questione xmlhttprequest/jQuery ok, nel senso che è molto più comodo. Sappi però che come ho detto sopra, qualsiasi cosa che fa jQuery può essere fatta tramite javascript semplice (visto che appunto jQuery è soltanto una libreria che utilizza javascript).

    EDIT:
    non avevo visto la risposta di karl.
    Citazione Originalmente inviato da karl94 Visualizza messaggio
    La cosa che non mi garba troppo è l'uso dell'attributo onsubmit, io prediligerei i listener aggiunti con l'apposito metodo addEventListener.
    Sì, su questo hai ragione. Ormai ho preso la bruttissima abitudine di scrivere gli eventi in quel modo (in realtà quando ho imparato penso che lo stato dell'arte era proprio in quel modo), ma sappi che quando li uso per "le mie pagine" penso sempre a quando avevi detto che era meglio usare addEventListener, quindi modifico lo script (anche se credo sia soltanto una questione stilistica, nel senso che il browser internamente fa la stessa cosa. Però io ci tengo a queste cose, quindi modifico sempre!).

    Citazione Originalmente inviato da karl94 Visualizza messaggio
    Se invece si usasse come accorgimento l'aggiunta (dinamica, da parte di JavaScript) di un elemento input di tipo hidden che testimoni la conferma da parte dell'utente, si potrebbe evitare questo tipo di problema.
    Molto interessante, non ci avevo pensato! Ma in che modo conferma l'utente? Nel senso: dici di inserire (e/o cambiar valore a) un input hidden alla pressione del "confirm()"? Mentre per la gestione "noscript" invece dell'hidden mettere un checkbox?

    p.s: <divagando> (consigli per l'utente che ha aperto il 3d) in generale non mi piacciono molto i confirm() o alert(): mi danno l'idea di una cosa molto poco professionale. Al più sarebbe meglio far apparire interfacce personalizzate nella pagina, tipo con <div> o simili.


    Ciao!
    Ultima modifica di alemoppo : 09-03-2015 alle ore 03.18.37
    karl94 likes this.

  26. #26
    Guest

    Predefinito

    È inutile se non si ha competenza di codice, ho capito che è inutile parlare, per te alemappo gli eventi sono onsubmit onchange etc..??
    Ma assolutamente no, l'evento è prendere l'oggetto xmlhttprequest e gestirlo, si vede che non hai mai gestito grosse quantità di dati e grosse chiamate a salvataggio dati, io ti parlo di dati, DATI DI UTENTI, numero civico, nome cognome, tel, conto corrente, etc...etc...
    Guarda lascia perdere e continua ad usare javascript con l'xmlhttprequest quando lavorerai nella gestione dati ed invio dati al DB capirai i miei discorsi...per il momento ho capito che è tempo perso.
    Non è questione che è solo più comodo, e ridaie, è questione che quello che c'è nella libreria jquery non C'E' IN JAVASCRIPT A BASSO LIVELLO....e sarà la 50 esima volta che te lo dico...faccio la chiamata, ti blocco, e gestisco dietro un quantitativo di dati che mi serve poi ad ajaxcomplete faccio altro, questo con javascript non lo fai hai bisogno di jquery, certamente non sai di cosa parlo...Comunque adesso vado che è tardissimo e domani alle 9 sono appunto a lavorare.

  27. #27
    Guest

    Predefinito

    Uhm, e quindi vorresti dire che quando fai una chiamata ajax, non richiami il server?
    eridaieeeeee....NOOOOOO CHE NON CHIAMO IL SERVER.....Il server lo chiamo solo quando c'è bisogno e sono sicuro che lo posso chiamare, altrimenti faccio funzioni di callback e chiamate asincrone...eridaie...Ho capito che non hai proprio capito come si gestiscono le chiamate al server.
    Comunque per qualsiasi informazione sono qui.Ciao

  28. #28
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    È inutile se non si ha competenza di codice, ho capito che è inutile parlare, per te alemappo gli eventi sono onsubmit onchange etc..??
    Beh oddio, dipende di cosa parliamo. Sicuramente onSubmit onChange sono eventi, non riferiti a xmlhttprequest, ma sono comunque eventi (anche perché inviando un form in quel modo, ajax non viene proprio utilizzato). La documentazione li chiama proprio in quel modo.


    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    Ma assolutamente no, l'evento è prendere l'oggetto xmlhttprequest e gestirlo, si vede che non hai mai gestito grosse quantità di dati e grosse chiamate a salvataggio dati, io ti parlo di dati, DATI DI UTENTI, numero civico, nome cognome, tel, conto corrente, etc...etc...


    Non è questione che è solo più comodo, e ridaie, è questione che quello che c'è nella libreria jquery non C'E' IN JAVASCRIPT A BASSO LIVELLO....e sarà la 50 esima volta che te lo dico...faccio la chiamata, ti blocco, e gestisco dietro un quantitativo di dati che mi serve poi ad ajaxcomplete faccio altro, questo con javascript non lo fai hai bisogno di jquery
    Non ricordavo gli eventi xmlhttprequest: è da molto che non faccio qualcosa in js, con il passare del tempo ci si dimentica. Come scritto da karl94, vedi qui.
    Sicuramente però so che quello che si può fare con jQuery lo si può fare anche con javascript: come potrebbe essere altrimenti se jQuery è fatto in javascript?

    EDIT:

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    Il server lo chiamo solo quando c'è bisogno e sono sicuro che lo posso chiamare, altrimenti faccio funzioni di callback e chiamate asincrone
    E quindi chiamate al server. Asincrono significa semplicemente che non blocca l'esecuzione dello script js. Non cambia nulla "esternamente": sempre di una richiesta al server si tratta.

    p.s: se vuoi trasmettere informazioni/sapere (in tal caso ti ringrazio insegnandomi qualcosa), cerca di linkare qualcosa/documentare. Non puoi dire semplicemente "no, non è così". Come vedi si cerca di documentare qualsiasi cosa si dice, altrimenti sono parole al vento.

    Ciao!
    Ultima modifica di alemoppo : 09-03-2015 alle ore 04.11.08

  29. #29
    Guest

    Predefinito

    Infine vorrei precisare a Fractalcosmo che il metodo preventDefault non fa parte né di JQuery
    Quando fai una chiamata, invochi una chiamata, tu stai caricando una pagina INDIPENDENTEMENTE dalla validazione dei dati, a livello di programmazione il parse non gliene pò fregà de meno se scrivi PIPPO O PIPPO1 event che è spiegato molto bene nell'API di JQUERY serve proprio a bloccare l'evento di chiamata...fammi questo con javascript senza usare jquery...Dai su, se hanno inventato jquery un motivo ci sarà no? :D

    http://api.jquery.com/event.isImmedi...gationStopped/

  30. #30
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,067

    Predefinito

    Citazione Originalmente inviato da fractalcosmo Visualizza messaggio
    fammi questo con javascript senza usare jquery
    Certamente: è sufficiente guardare appunto il sorgente di jQuery per vedere come hanno fatto (precisamente qui, riga 673-708).
    Come vedi, utilizzano proprio preventDefault.

    Ciao!
    Ultima modifica di alemoppo : 09-03-2015 alle ore 04.49.58
    karl94 likes this.

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •