Quiero eliminar los valores codificados de "pedido" y obtener esos valores de la función "getCookie". ¿Cómo puedo hacer esto? Cada vez que hago clic en una columna de la tabla, se ordena. Quiero almacenar ese orden de clasificación por función setCookie. Cuando la página se actualiza, quiero obtener ese orden de clasificación de la función getCookie. Gracias.
$(document).ready(function () { let sortValue = getCookie("releaseTicketSort") var oTable = $('#allTicketsTable').DataTable({ "pageLength": 5, "lengthChange": true, "fixedHeader": true, "lengthMenu": [ [5, 10, 25, 50, -1], [5, 10, 25, 50, "All"] ], "order": [[2, 'asc']], columnDefs: [ { width: 150, targets: 5 }, { className: "dt-center", targets: 5} ], fnDrawCallback: function (settings){ console.log(settings.oSavedState.order) var orderVec = settings.oSavedState.order setCookie("releaseTicketSort", orderVec, exp=1000) getCookie("releaseTicketSort") } }); }); function setCookie(c_name,value,exdays) { var exdate=new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie=c_name + "=" + c_value; } function getCookie(c_name) { var i,x,y,ARRcookies=document.cookie.split(";"); for (i=0;i<ARRcookies.length;i++) { x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); x=x.replace(/^\s+|\s+$/g,""); if (x==c_name) return unescape(y); } }En lugar de usar cookies, sugeriría usar las funciones de ahorro de estado integradas en DataTables (suponiendo que esté usando DataTables v1.10 o posterior).
Para su escenario en el que solo desea guardar el estado de clasificación entre cargas de página (pero no paginación ni filtrado), entonces la opción stateSaveParams es probablemente el enfoque más simple:
$(document).ready(function() { var table = $('#example').DataTable( { stateSave: true, stateSaveParams: function (settings, data) { data.start = 0; data.search.search = ''; } } ); } );Las opciones anteriores hacen que todos los datos de estado de la tabla se almacenen en el almacenamiento local de su navegador. Una entrada típica contendrá datos en la siguiente estructura:
{ "time": 1651180700425, "start": 0, "length": 10, "order": [ [0, "asc"] ], "search": { "search": "", "smart": true, "regex": false, "caseInsensitive": true }, "columns": [{ "visible": true, "search": { "search": "", "smart": true, "regex": false, "caseInsensitive": true } }, . . . { "visible": true, "search": { "search": "", "smart": true, "regex": false, "caseInsensitive": true } }] } La opción stateSaveParams anulará los valores start y search.search para que se guarden como sus valores predeterminados (primera página y sin término de búsqueda) en lugar de los valores que el usuario haya proporcionado:
stateSaveParams: function (settings, data) { data.start = 0; data.search.search = ''; } Nada más se modifica, incluidos los valores de clasificación. DataTables recupera automáticamente estos datos guardados del almacenamiento local, debido a la opción stateSave: true .
Por lo tanto, no necesita guardar explícitamente los datos de clasificación; solo necesita "desguardar" explícitamente las otras opciones que en realidad no desea conservar/restaurar.
Antecedentes y referencia: Más información sobre el almacenamiento local .