Quindi c'è un modulo che voglio inviare solo quando una condizione viene verificata dal database usando ajax. Sto usando il metodo preventDefault()
se la condizione è vera, vale a dire se un utente non è residente, una variabile è impostata su true in ajax successs function
e preventDefault()
viene chiamata, tuttavia, quando lo fa, il modulo viene sempre inviato. Non aspetta che l'ajax finisca anche quando async è impostato su false. Ecco il codice.Come fare un modulo attendere che ajax finisca prima di inviarlo?
$('#button').click(function(e) {
if ($('#ca_resident').prop('checked') == true) {
amount=$('#user-amount').val().replace(/[,]/g,"");
project_name=$('#project_name').val();
var not_resident = false;
$.ajax({
url: '/main/verify_residence/',
type: 'POST',
aysnc: false,
data: {
value: amount,
name: project_name
},
success: function(data){
$("#verify_residence").html(data);
not_resident = true;
},
dataType: 'html'
});
}
if(not_resident){
e.preventDefault();
}
});
evitare il default prima di chiamare l'Ajax e il 'ajax.success' è quindi possibile' 'form.submit – Vogel612
ritorno Try() false; invece di e.preventDeafult(). –
@ Vogel612 Ho provato a farlo prima. questo impedisce alla forma di sottomettersi in qualsiasi condizione. Il modulo dovrebbe inviare quando un utente non fallisce il controllo di residenza – user2488801