Tengo un Ajax para el que quiero enviar, pero después de enviarlo lo retrasé con 4 segundos. (porque tengo archivos PHP que necesitan tiempo para calcular).
Será perfecto si me dices cómo poner la barra de carga y dónde exactamente. Supongo que tiene que ser después de la función (msg).
Intento retrasar setTimeout(cbutton, 4000); pero nada pasa ..
var barray = []; function cbutton() { $('input:radio[name="cheking"]:checked').val(); var varies = $("#fromdate").val(); var varies2 = $("#todate").val(); if (varies == "" || varies2 == "") { alert("Please fill in all 2 fields first and then submit again"); } else { barray.push(varies + "~" + varies2); $.ajax({ type: "POST", url: $('input:radio[name="cheking"]:checked').val(), data: { fromdate: varies, todate: varies2 } }).done(function(msg) { setTimeout(cbutton, 4000); }); } }Está llamando a la recursividad aquí, cbutton se llama a sí mismo cuando ajax devuelve el éxito.
Necesitas algo como esto
var barray = []; function cbutton() { $('input:radio[name="cheking"]:checked').val(); var varies = $("#fromdate").val(); var varies2 = $("#todate").val(); if (varies == "" || varies2 == "") { alert("Please fill in all 2 fields first and then submit again"); } else { barray.push(varies + "~" + varies2); $.ajax({ type: "POST", url: $('input:radio[name="cheking"]:checked').val(), data: { fromdate: varies, todate: varies2 } }).done(function (msg) { setTimeout(clearForm(), 4000); }); } } clearForm = () => { $('form.input').forEach(i, input) => { $(input).val('') }); }