Estaba leyendo stackoverlow y descubrí que hay muchas preguntas relacionadas con esta etiqueta, quiero ejecutar dos códigos simultáneamente
usando el $cuando
mi código se ve así, pero no estoy seguro de cómo puedo reescribirlo, por favor guíe
$(document).ready(function() { $(document).on('click', '#Button',function (e) { e.preventDefault(); var isExcel = document.getElementById('Excel').checked ? 1 : 0; $.ajax({ url: "page1", cache: false, data : $('#form').serialize(), method: "post", success: function(response){ $('.mytable').show(); $('.mytable').html(response); } }).done(function(data) { $("#datatables").DataTable({ "bFilter": true, "serverSide": true, "deferRender":true, "processing": true, "ajax": { "url" : "/data.cfm", "type" : 'post' } } }); }); if(isExcel) { $.ajax({ // 2nd call url: "/excel.cfm", cache: false, data : $('#form').serialize(), method: "post", success: function(response){ alert('done'); } }); } }); });guíe cómo puedo hacer que funcione usando when, porque la llamada ajax con tablas de datos devolverá los resultados, el Excel puede tardar un tiempo
Quiero que cuando haga clic en el botón de clic, vaya primero a la llamada ajax, que trae las tablas de datos y comience a mostrarlas. Si la casilla de verificación de Excel está marcada, llama a otro jquery ajax que genera el archivo a partir de un código diferente en Excel, pero las tablas de datos deben estar visibles y en estado de ejecución.
Si desea que la parte de Excel se ejecute después de que regresen las tablas de datos, debe agregar la solicitud de Excel en la devolución de llamada realizada de la llamada de las tablas de datos:
$(document).ready(function() { $(document).on('click', '#Button',function (e) { e.preventDefault(); var isExcel = document.getElementById('Excel').checked ? 1 : 0; $.ajax({ url: "page1", cache: false, data : $('#form').serialize(), method: "post", success: function(response){ $('.mytable').show(); $('.mytable').html(response); } }).done(function(data) { $("#datatables").DataTable({ "bFilter": true, "serverSide": true, "deferRender":true, "processing": true, "ajax": { "url" : "/data.cfm", "type" : 'post' } } }); if(isExcel) { // moved here $.ajax({ // 2nd call url: "/excel.cfm", cache: false, data : $('#form').serialize(), method: "post", success: function(response){ alert('done'); } }); } }); // removed excel request from here }); });