Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Ajax invio form

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    94

    Ajax invio form

    Ciao a tutti, premetto che non se sia la sezione corretta quindi eventualmente i moderatori spostino dove ritengono pi� opportuno.

    Sto leggendo un libro di Javascript & Jquery e sono arrivato al capitolo Ajax.

    PS: ho letto anche il tutorial di Ajax su w3c school.

    Innanzitutto non ho capito una cosa fondamentale: C'� scritto che Ajax permette il caricamento di dati (html, xml, json) anche solo in una parte din una pagina web senza che sia necessario il caricamento di tutta la pagina ma solo del pezzo coinvolto.

    Significa quindi che con javascript e jquery, anche solo si fa qualcosa di banale (per esempio modificare o aggiungere un elemento) viene ricaricato tutto il DOM ogni volta (anche se noi poi effettivamente non lo vediamo)?

    Dopo questa domanda generale vengo al problema:

    Sto seguendo, in particolare, l'esempio di invio di un form mediante ajax. Ho copiato quanto riportato nel libro:

    codice:
    1) $("#register").on("submit", function(e) { //all'invio del form
        2) e.preventDefault(); // previeni in comportamento di default
        3) var details = $("#register").serialize(); //con serialize() vengono raccolte le informazioni
        4) $.post("register.php", details, function(data) { S.post() per inviare al server
            5) $("#register").html(data);
            });
        });
    I punti 4 e 5 non li ho capiti bene. $.post() � uno dei metodi a disposizione ($.get(), $.getJSON(), $.getScript() che sono tutte shorthand del metodo $.Ajax() ). register.php � l'url del file a cui inviare i dati da essere processati, details sono i dati del form. Function(data) cosa fa esattamente? E' la funzione che gestisce il responso?
    Il punto 5 posso farne a meno? Nel senso, quello che voglio fare � che il file php (register.php) mandi una mail con i dati raccolti quindi non serve una funzione che gestisca il responso?

    Poi non mi torna una cosa: Non devo creare prima l'oggetto new XMLHttpRequest come in alcuni esempi precedenti oppure il metodo $.post() lo fa implicitamente?

    Si sar� capito che sono un p� confuso.

    L'altro problema � relativo al php:
    Ho creato il file register.php dove recupero i dati del form come $nome = $_POST["nome"] e cosi via. Poi c'� la variabile $to (indirizzo email), $subject, $message, $headers e infine passo queste variabile alla funzione mail(). Per� mi esce un errore.. Non ho capito bene che tipo di errore ma cercando potrebbe essere relativo al file php.ini ma non ho assolutamente capito che parametri vanno impostati.

    Forse recuperare i dati del form va fatto in altro mode essendoci di mezzo Ajax?

    So che sono molte domande ma vi chiedo aiuto perch� non so dove sbaglio.

    Uso WAMP.

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    Ciao, per la prima domanda e' l'esattao contrario. Con ajax puoi caricare parte del contentuto senza dover ricaricare tutto il documento.
    Se usi $.Ajax di jQuery non serve usare XMLHttpRequest perchè di jQuery di suo con questa funzione si occupa di questo.

    $.get , $.post o $.json sono tutte abbreviazioni di $.Ajax le quali come si evince dal nome, mandano dati in GET, POST o quello che permette appunto il metodo abbreviato.

    I parametri sono la url da richiamare, i dati da inviare e la funzione di callback la quale ritornerà la risposta inviata dalla url/script richiamato (parametro 1).

    Al punto 5 ovviamente avendo una risposta sta a te decidere cosa far in base a questa. Nell'esempio viene modificato il contenuto dell'elemento con ID register.

    Per la parte in PHP ti conviene aprire o cercare sulla sezione PHP, senza vedere quello che hai fatto nel codice potrebbero esserci motivi vari.

    Se vuoi vedere cosa invii allo script quando fai la chiamata in ajax, basta che apri la console di chrome o firefox. Nel tab console e network vedi i log e chiamate che esegui più tutti i dati che stai passando (con dati di richiesta e risposta).

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    94
    Grazie m4rko80.

    Nel libro c'è scritto che solo il paramentro url è richiesto mentre gli altri sono opzionali. E' corretto?

    La callback non è nient'altro che una funzione che gestice la risposta inviata dal server, giusto?

    quel parametro data dentro la funzione, function(data), potrebbe essere qualsiasi cosa o deve essere proprio data?

    Comunque non capisco a fondo l'utilità dell'esempio in questione:

    Che senso ha far inviare i dati del form ad Ajax (che li passa ad uno script.php) quando al submit dell'utente si potrebbe direttamente passarli allo script.php? Voglio dire in questo caso i dati del form arrivano comunque allo script.php (che avevo impostato per mandare una mail).

    Grazie per le dritte.. alcune cose mi sono chiare altre un pò meno quindi rileggerò con più attenzione il capitolo Ajax per vedere se mi è sfuggito qualcosa.

  4. #4
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,654
    Il fatto di usare ajax per passare i dati vuol dire che non vuoi far ricaricare la pagina. Se non interessa questo è inutile che usi ajax. A sto punto usa una form qualsiasi che fa il suo submit e ricarica tutto.
    QUI ci sono tutti gli esempio per ajax jquery con relative spiegazioni.
    La viriabile "data" può avere il nome che vuoi.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    94
    Quote Originariamente inviata da m4rko80 Visualizza il messaggio
    Il fatto di usare ajax per passare i dati vuol dire che non vuoi far ricaricare la pagina.
    Ciao, hai perfettamente ragione. Ero cosi preso a capire alcune cose che avevo dimenticato lo scopo principale.

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.