deleteItem必须返回什么?

时间:2018-07-05 08:32:53

标签: jsgrid

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调用是否成功。

1 个答案:

答案 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) => {},
         })
     }