Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js Vue axios删除请求不工作。我怎么修理它?_Vue.js_Vuejs2_Axios - Fatal编程技术网

Vue.js Vue axios删除请求不工作。我怎么修理它?

Vue.js Vue axios删除请求不工作。我怎么修理它?,vue.js,vuejs2,axios,Vue.js,Vuejs2,Axios,我有问题,删除请求,我的职位,得到工作正常。 我做错了什么 removeUser(id) { axios.delete('https://jsonplaceholder.typicode.com/users' + id) .then(function(response) { const user = response.data; this.users.splice(id, user); }); 如果response.sta

我有问题,删除请求,我的职位,得到工作正常。 我做错了什么

 removeUser(id) {
      axios.delete('https://jsonplaceholder.typicode.com/users' + id)
      .then(function(response) {
        const user = response.data;
        this.users.splice(id, user);
      });


如果
response.status==204
,则删除成功

对于客户端,这里是一个axios示例,请注意在
用户之后有一个

destroy() {
    return request.delete('/api/users/' + id)
}
对于服务器,以下是一个Laravel示例:

if( $article->delete() ) {
    return response()->json(null, 204);
} else {
    abort(409);
}

我认为您确实需要将尾随的“/”附加到URL,这样URL的格式就正确了,例如“https://jsonplaceholder.typicode.com/users/123“(而不是结尾的“users123”)

除此之外,第一个参数是项目移除开始的位置。第二个(可选)参数,
deleteCount
,是要删除的项目数。除了
deleteCount
,您还可以传递一组对象,这些对象将在
start
位置之后以及项目被删除之后插入

您只需在
this.users
数组中找到对象并将其删除。如果要为此使用
Array.prototype.splice
,则可以使用查找数组中用户的索引,然后将其删除:

//查找要删除的项的索引
const indexOfUserToRemove=this.users.findIndex(u=>u.id==id);
//调用splice以删除该项目
this.users.splice(indexOfUserToRemove,1);

在您提供的代码中,我只能看到一个问题

您正试图通过执行
this.users.splice(id,user)来修改Vue实例$data
users
对象。但是您在回调函数中,
这个
不再代表Vue实例。 要解决此问题并使
用户
对象在响应到来后实际修改,您需要这样做:

 removeUser(id) {
  let that = this;
  axios.delete('https://jsonplaceholder.typicode.com/users' + id)
  .then(function(response) {
    const user = response.data;
    that.users.splice(id, user);
  });
router.route('/users:id').delete(async function(req,res,next){ /* ... */ });
现在,我没有任何来自后端的代码,所以我只做一些假设:

  • 路由可能没有很好的定义>如果您使用的是NodeJ,那么您应该检查您的路由,它应该如下所示:

     removeUser(id) {
      let that = this;
      axios.delete('https://jsonplaceholder.typicode.com/users' + id)
      .then(function(response) {
        const user = response.data;
        that.users.splice(id, user);
      });
    
    router.route('/users:id').delete(async function(req,res,next){ /* ... */ });
    
  • 您可能有路由问题,因为在用户值之前缺少
    /

1提示:同样,如果您正在使用NodeJS,您可以在
中使用它。删除
路由:

  res.status(200).json({ errorCode : null , errorMessage : null , users : [] });

查看您是否在前端收到它。

尝试
typicode.com/users/'+id
我也尝试过,不起作用“delete”方法不返回数据。只是一个空对象。如何使其返回数据?我的数据中有这个
return{users:[],}