let btn_submit_modal_export = $('#modalExportFile_submit'), has_clicked = false ; $(btn_submit_modal_export).unbind('click'); $(btn_submit_modal_export).bind('click', function () { if(!has_clicked){ has_clicked = true; let btn_initial_state = $(this).html(); let data = { 'fields':[], 'selection_only': false, 'selected_ids' : [], 'separator': $('#export_separator').val(), 'charset': $('#export_charset').val(), 'file_format': $('#export_file_format').val(), 'token' : "{{ csrf_token('app_export') }}", 'code_export' : $('#export_code_export').val() } let selected_fields = $('#export_available_fields option'); $(selected_fields).each(function(){ let value = $(this).val(); data.fields.push(value); }); $(btn_submit_modal_export).html(btn_spin); $.ajax({ url: "{{ url('app_export') }}", data: data, method: 'POST', xhr:function(){ var xhr = new XMLHttpRequest(); xhr.responseType = 'blob' return xhr; }, success: function (response,status, headers) { const regex = /filename=(.*?)$/g let content_disposition = headers.getResponseHeader('Content-Disposition'); let search = regex.exec(content_disposition); const url = window.URL.createObjectURL(response); const a = document.createElement('a'); a.style.display = 'none'; a.href = url; a.download = (search.length >= 1) ? search[1] : 'export.xlsx'; document.body.appendChild(a); a.click(); window.URL.revokeObjectURL(url); $(btn_submit_modal_export).html(btn_initial_state); $('#modalExportFile').foundation('close'); has_clicked = false; } }); } });