deleteItem
的文档说:
如果删除是异步的,则方法应返回jQuery promise,删除完成后即可解决。
这到底是什么意思?诺言必须返回任何数据吗?
以下工作吗?
deleteItem: function(item) {
return $.ajax("/api/members/", {
method: "DELETE",
data: { item: item},
error: (err) => { console.log(err);},
success: (result, status, jqXHR) => {},
})
}
上面的代码在测试中对我有用,但是我不确定是否应该忽略Ajax调用是否成功。
答案 0 :(得分:1)
如果您的业务逻辑容许删除项目失败,那么最好不处理它。
在大多数情况下不是这样,您应该处理删除项目的失败,并正确告知用户此失败,可能带有一条优美的信息,请他稍后再试。
关于“ deleteItem必须返回什么?” :
如果没有任何内容,则返回成功的状态码200。 并且它应该返回带有错误正文的适当的http状态代码,该代码应适合失败的原因。 例如:如果您要删除的项目不存在,则预计会返回状态码422(无法处理的实体)的错误。
例如,如果您无权删除此项目,则将返回403状态代码错误。
总而言之,是的,您应该处理该错误并将其告知用户。
您的代码应该看起来像这样:
deleteItem: function(item) {
return $.ajax("/api/members/", {
method: "DELETE",
data: { item: item},
error: (jqXHR , err) => {
if(jqXHR.status == 403){
console.log("handle forbidden error code);
alert("You are not authorized to delete this item, check
with your manager...");
}
},
success: (result, status, jqXHR) => {},
})
}