Vue.js axios delete方法删除数组中的错误对象
Vue.js Axios delete method deleting the wrong object in the array
我有一个问题,我的 axios.delete 方法删除了数组中的错误对象。总共有 3 个对象,来自 api,当我在 index.html 文件中删除时,id 为 2 和 3 的对象很好,但是当我尝试删除时它会抛出 'Uncaught (in promise) Error: Request failed with status code 404' 错误数组中的第一个对象来自我的 API.
我的索引文件(包括删除按钮)
<body>
<div id="app">
<template v-for="(results, index) in result">
<div class="card" style="width: 20rem; display:inline-block;">
<div class="card-block">
<p>{{ results }}</p>
<button type="button" class="btn btn-danger pull-right" data-toggle="modal" v-on:submit.prevent="deleteData(index)" @click="deleteData(results, index) in result">Delete</button>
<h1> {{ results.comments}} </h1>
</div>
</div>
</template>
</div>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://unpkg.com/vue"></script>
<script src="src/main.js"></script>
Main.js
var vm = new Vue ({
el: '#app',
data: {
result: ''
},
created: function(){
this.getResult();
},
methods: {
deleteData: function(result, id) {
axios.delete('https://my-json-server.typicode.com/json/posts/' + id)
.then(response => {
this.result.splice(id, 1)
console.log(this.result);
});
},
getResult: function() {
// this.results = 'Loading...';
axios.get('https://my-json-server.typicode.com/json/db')
.then(response => {
// console.log(response.data);
this.result = response.data.posts;
console.log(this.result);
});
}
}
});
改变
<button type="button" class="btn btn-danger pull-right" data-toggle="modal" v-on:submit.prevent="deleteData(index)" @click="deleteData(results, index) in result">Delete</button>
到
<button type="button" class="btn btn-danger pull-right" data-toggle="modal" @click="deleteData(results, index)">Delete</button>
如我所见,您向 deleteData
方法传递了两个参数。第二个参数是结果数组的索引,它不是你的真实结果 ID。
在这里,你只需要用这个替换你的deleteData
方法:
deleteData: function(result, id) {
axios.delete('https://my-json-server.typicode.com/json/posts/' + result.id)
.then(response => {
this.result.splice(id, 1)
console.log(this.result);
});
},
正如您在上面看到的,我们刚刚将您的 id
更改为 result.id
这是一个 404 错误,表示无法访问该页面。可能是 link 不正确。请再看一遍url!同样的事情发生在我身上,然后我意识到我试图达到的 URL 是不正确的。
我有一个问题,我的 axios.delete 方法删除了数组中的错误对象。总共有 3 个对象,来自 api,当我在 index.html 文件中删除时,id 为 2 和 3 的对象很好,但是当我尝试删除时它会抛出 'Uncaught (in promise) Error: Request failed with status code 404' 错误数组中的第一个对象来自我的 API.
我的索引文件(包括删除按钮)
<body>
<div id="app">
<template v-for="(results, index) in result">
<div class="card" style="width: 20rem; display:inline-block;">
<div class="card-block">
<p>{{ results }}</p>
<button type="button" class="btn btn-danger pull-right" data-toggle="modal" v-on:submit.prevent="deleteData(index)" @click="deleteData(results, index) in result">Delete</button>
<h1> {{ results.comments}} </h1>
</div>
</div>
</template>
</div>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script src="https://unpkg.com/vue"></script>
<script src="src/main.js"></script>
Main.js
var vm = new Vue ({
el: '#app',
data: {
result: ''
},
created: function(){
this.getResult();
},
methods: {
deleteData: function(result, id) {
axios.delete('https://my-json-server.typicode.com/json/posts/' + id)
.then(response => {
this.result.splice(id, 1)
console.log(this.result);
});
},
getResult: function() {
// this.results = 'Loading...';
axios.get('https://my-json-server.typicode.com/json/db')
.then(response => {
// console.log(response.data);
this.result = response.data.posts;
console.log(this.result);
});
}
}
});
改变
<button type="button" class="btn btn-danger pull-right" data-toggle="modal" v-on:submit.prevent="deleteData(index)" @click="deleteData(results, index) in result">Delete</button>
到
<button type="button" class="btn btn-danger pull-right" data-toggle="modal" @click="deleteData(results, index)">Delete</button>
如我所见,您向 deleteData
方法传递了两个参数。第二个参数是结果数组的索引,它不是你的真实结果 ID。
在这里,你只需要用这个替换你的deleteData
方法:
deleteData: function(result, id) {
axios.delete('https://my-json-server.typicode.com/json/posts/' + result.id)
.then(response => {
this.result.splice(id, 1)
console.log(this.result);
});
},
正如您在上面看到的,我们刚刚将您的 id
更改为 result.id
这是一个 404 错误,表示无法访问该页面。可能是 link 不正确。请再看一遍url!同样的事情发生在我身上,然后我意识到我试图达到的 URL 是不正确的。