Ajax 删除请求 returns 200 但引发错误
Ajax delete request returns 200 but fires error
我正在尝试为我的项目创建一个简单的 API。我正在使用 jquery Ajax 发送删除请求。 Delete 请求被发送,执行它应该做的事情(从数据库中删除一个条目),return 状态 200,但触发错误事件。
我已经在这些帖子中寻找解决方案,但他们无法帮助我:
Ajax request returns 200 but error event is fired
Ajax request returns 200 OK but error event is fired
Ajax delete returns 200 but firing off error event
这是 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);
API处理程序代码:
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
参数。
我正在尝试为我的项目创建一个简单的 API。我正在使用 jquery Ajax 发送删除请求。 Delete 请求被发送,执行它应该做的事情(从数据库中删除一个条目),return 状态 200,但触发错误事件。
我已经在这些帖子中寻找解决方案,但他们无法帮助我:
Ajax request returns 200 but error event is fired Ajax request returns 200 OK but error event is fired Ajax delete returns 200 but firing off error event
这是 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);
API处理程序代码:
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
参数。