Envoi à deux points d'extrémité
Je voudrais essayer quelque chose comme ça au lieu d'utiliser async: true
. Bien qu'il soit nettement plus compliqué, il ne gèlent pas l'interface .:
$(document).ready(function(){
// Handle Form-Submission
$("#mainForm").submit(function(e){
e.preventDefault();
var $form = $(this);
if($form.data('submitting')) return; // Avoid double submissions
$(':submit').attr('disabled','disabled'); // Disable the submit button
// Reset Error Array
errors = new Array();
/* Validation Code Removed - Not Relevant */
// Check if errors exist
if (errors.length > 0) {;
$(':submit').removeAttr('disabled'); // Enable the submit button
return false;
} else {
$("div.errors").html("");
$form.data('submitting',true); // Flag that a submission has started
$.post("post.php",{
"First Name":name_first.val(),
"Last Name":name_last.val(),
"Home State":home_state.val(),
"Primary Email":email_primary.val()},
function(){
// remove our special handler and submit normally
$form.unbind('submit').submit();
}
);
}
});
});
Réponse originale
Il semble que votre raccrochage est que vous voulez utiliser $.post
si JavaScript est activé, mais laisser la forme fonctionne normalement avec JavaScript désactivé.
Cependant, depuis aucune de votre JavaScript fonctionnera si elle est désactivé vous n'avez pas à vous soucier de modifier le comportement de la fonction submit
.
Vous pouvez laisser votre déclaration return false;
, ou utiliser
$("#mainForm").submit(function(e){
// all your existing code
e.preventDefault();
}
qui gardera la forme de soumettre normalement et sera au lieu d'utiliser votre méthode $.post
lorsque JavaScript est activé . Si c'est désactivé, il se présentera normalement.
preventDefault
est préférable à return false
si vous souhaitez que les bulles d'événements continuent normalement, mais que l'action par défaut du navigateur ne se poursuive pas. return false
est l'équivalent de l'appel e.preventDefault(); e.stopPropagation();
Qu'est-ce que vous essayez exactement de faire? Attendez la fin du $ .post, puis envoyez le formulaire? –
J'envisage ça, Paolo. Fondamentalement, je veux enregistrer les données sans interrompre le flux de l'application. Si Javascript est désactivé, j'aimerais quand même que le formulaire fonctionne. Mais si c'est activé, je voudrais passer les données dans un script PHP. – Sampson
Peut-être devrais-je changer $ ("# mainForm"). Submit() en $ ("# submitButton"). Click() puis soumettre le formulaire dans la fonction de rappel? – Sampson