Dovrai fare le cose manualmente con una chiamata AJAX al server. Ciò richiederà di sovrascrivere anche il modulo.
Ma non preoccuparti, è un gioco da ragazzi. Ecco una panoramica su come lavorerai con il tuo modulo:
- sovrascrive l'azione di invio predefinita (grazie all'oggetto evento passato, che ha un'estensione
preventDefault
metodo)
- prendi tutti i valori necessari dal modulo
- lancia una richiesta HTTP
- gestire la risposta alla richiesta
Per prima cosa, dovrai annullare l'azione di invio del modulo in questo modo:
$("#myform").submit(function(event) {
// Cancels the form's submit action.
event.preventDefault();
});
E poi, prendi il valore dei dati. Supponiamo che tu abbia una casella di testo.
$("#myform").submit(function(event) {
event.preventDefault();
var val = $(this).find('input[type="text"]').val();
});
E poi lancia una richiesta. Supponiamo solo che sia una richiesta POST.
$("#myform").submit(function(event) {
event.preventDefault();
var val = $(this).find('input[type="text"]').val();
// I like to use defers :)
deferred = $.post("http://somewhere.com", { val: val });
deferred.success(function () {
// Do your stuff.
});
deferred.error(function () {
// Handle any errors here.
});
});
E questo dovrebbe farlo.
Nota 2: per analizzare i dati del modulo, è preferibile utilizzare un plug-in . Ti renderà la vita davvero facile, oltre a fornire una bella semantica che imita un'effettiva azione di invio del modulo.
Nota 2: non è necessario utilizzare i rinvii. È solo una preferenza personale. Puoi ugualmente fare quanto segue e dovrebbe funzionare anche.
$.post("http://somewhere.com", { val: val }, function () {
// Start partying here.
}, function () {
// Handle the bad news here.
});