【发布时间】:2021-12-21 10:54:18
【问题描述】:
我在 Laravel/VueJS 上做喜欢/不喜欢系统。
我的系统可以正常工作,但我想避免垃圾邮件发送者。
点赞按钮:
<a v-on:click="like(10, $event)">
<i class="fas fa-heart"></i>
</a>
10为post id,在laravel Blade中生成...
这是我为避免垃圾邮件发送者所做的尝试:
const app = new Vue({
el: '#app',
data() {
return {
allowed: true,
};
},
methods: {
like: function (id, event) {
if (this.allowed) {
axios.post('/posts/' + id + '/like', {
post_id: id,
})
.then((response) => {
this.allowed = false; //Set allowed to false, to avoid spammers.
..... code which changes fa-heart, changes class names, texts etc ....
// send notification to user
Vue.toasted.show('Bla bla bla successfuly liked post', {
duration: 2000,
onComplete: (function () {
this.allowed = true //After notification ended, user gets permission to like/dislike again.
})
});
但是这里缺少一些东西,或者我做错了什么。当我非常快地点击喜欢图标并检查请求时,axios 发送 3-4-5 个请求(取决于您点击的速度)
只有在那之后 3-5 个请求 data.allowed 才变为 false。为什么?我想:
- 允许 = 真;
- 用户点击喜欢 -> allowed = false; > 第二次点击“你不能再次点击,因为之前的通知没有结束”;
- 上一个通知结束 -> allowed = true;
- ...循环
【问题讨论】:
标签: javascript laravel vue.js axios