Estoy tratando de crear una API simple para mi proyecto. Estoy enviando una solicitud de ELIMINACIÓN usando jquery Ajax. La solicitud de eliminación se envía, hace lo que se supone que debe hacer (elimina una entrada de la base de datos), devuelve un estado 200, pero activa un evento de error.
Ya he buscado soluciones en estas publicaciones pero no han podido ayudarme:
La solicitud Ajax devuelve 200 pero se activa el evento de error La solicitud Ajax devuelve 200 OK pero se activa el evento de error Ajax delete devuelve 200 pero activa el evento de error
Este es el código AJAX:
function ajaxCall(method,hmm){ // function that send an ajax request $.ajax({ dataType: 'JSON', url: '/APIHandler.php?' + $.param({values:hmm}), type: method, success: function(response) { // when the request is done delete the previously placed products for new ones console.log(response); const parentDiv = document.querySelector('#basic-grid'); removeAllChildNodes(parentDiv); turnToObjects(response); }, error: function(xhr){ alert(xhr); console.log(xhr); } }); } ... ajaxCall('DELETE',checked);El código APIHandler:
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') { $vals = $_GET['values']; $API->delete($vals); }La respuesta de la solicitud:
abort: ƒ (e) arguments: [Exception: TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at Function.r (<anonymous>:1:83)] caller: [Exception: TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at Function.r (<anonymous>:1:83)] length: 1 name: "abort" prototype: {constructor: ƒ} __proto__: ƒ () [[FunctionLocation]]: jquery.min.js:2 [[Scopes]]: Scopes[3] always: ƒ () catch: ƒ (e) done: ƒ () fail: ƒ () getAllResponseHeaders: ƒ () getResponseHeader: ƒ (e) overrideMimeType: ƒ (e) pipe: ƒ () progress: ƒ () promise: ƒ (e) readyState: 4 responseText: "" setRequestHeader: ƒ (e,t) state: ƒ () status: 200 statusCode: ƒ (e) statusText: "OK" then: ƒ (t,n,r)Tampoco puedo encontrar ninguna solución para el error.
[Exception: TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them at Function.r (<anonymous>:1:83)]Agregue contentType:'application/json' a su código
Y cambie el tipo de dataType a text
... dataType: 'text', contentType:'application/json' ...Establece su tipo de datos como dataType , por lo que $.ajax intenta analizar su respuesta ajax como JSON , pero su respuesta está vacía, por lo que se genera un error.
Envíe una respuesta JSON desde su solicitud o dataType el parámetro tipo de datos.