[英]Ajax delete request returns 200 but fires error
我正在尝试为我的项目创建一个简单的 API。 我正在使用 jquery Ajax 发送 DELETE 请求。 删除请求被发送,执行它应该做的事情(从数据库中删除一个条目),返回状态 200,但会触发错误事件。
我已经在这些帖子上寻找解决方案,但他们无法帮助我:
Ajax 请求返回 200 但触发错误事件Ajax 请求返回 200 OK 但触发错误事件Ajax 删除返回 200 但触发错误事件
这是 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);
APIHandler 代码:
if ($_SERVER['REQUEST_METHOD'] === 'DELETE') {
$vals = $_GET['values'];
$API->delete($vals);
}
请求响应:
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)
我也找不到该错误的任何解决方案
[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)]
将contentType:'application/json'
到您的代码中
而改变dataType
到text
...
dataType: 'text',
contentType:'application/json'
...
您将dataType
设置为JSON
因此 $.ajax 试图将您的 ajax 响应解析为 JSON,但您的响应为空,因此会引发错误。
从您的请求发送 JSON 响应或删除dataType
参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.