Hola a todos, estoy usando jQuery DataTable y realizando paginación y clasificación del lado del servidor. Estoy atascado en un lugar, tengo una API de tipo POST, por lo que necesito enviar mi carga útil en Body.
Intenté el método POST en ajax pero seguía lanzando el código de estado 415 , es decir, el format is in an unsupported format . He notado que mi carga útil se envía en forma de datos. ¿Cómo puedo resolver este problema?
Aquí está mi código -
$(document).ready(function () { $('#dataTable').DataTable({ columns: [ { "data": "FirstName" }, { "data": "LastName" }, { "data": "PhoneNumber" }, { "data": "Address1" }, { "data": "Email" }, { "data": "Fax" }, { "data": "Calls" }, { "data": "Address2" }, { "data": "Deal status" }, { "data": "Conversations" } ], "processing": true, "serverSide": true, "ajax":{ "url": "myAPI", "dataType": 'application/json', "type": "POST", "beforeSend": function(xhr) { xhr.setRequestHeader("Authorization", "Bearer Token"); }, "data": function (d) { d.status= "Active"; d.field = ""; d.order="asc"; }, dataFilter: function(data) { var json = jQuery.parseJSON( data ); json.recordsTotal = json.totalElements; json.recordsFiltered = json.totalElements; json.data = json.content; console.log("total data",json); return JSON.stringify( json ); // return JSON string } } }); });¿Cómo puedo resolver este código de estado 415 y enviar la carga útil correctamente? Por favor ayuda
No estás devolviendo nada de:
"data": function (d) { d.status = "Active"; d.field = ""; d.order = "asc"; }, entonces, de acuerdo con los documentos para la opción ajax.data :
Si no hay un valor de retorno de la función (es decir,
undefined), entonces el objeto de datos original pasado a la función por DataTables se usará para la solicitud (la función puede haber manipulado sus valores).Si se devuelve un objeto, ese objeto se utilizará como datos para la solicitud. No se fusionará con el objeto de datos original construido por DataTables antes de enviarse.
Probar:
"data": function (d) { const extraPayload = {}; extraPayload.status= "Active"; extraPayload.field = ""; extraPayload.order="asc"; return {...d, ...extraPayload} },