Javascript 使用fetch api发布到服务器
我正试图在我的服务器上将帖子的最爱状态更改为Javascript 使用fetch api发布到服务器,javascript,fetch,progressive-web-apps,Javascript,Fetch,Progressive Web Apps,我正试图在我的服务器上将帖子的最爱状态更改为true或false,但我一直反复遇到同样的问题。我点击favorite按钮,确信favorite状态会发生变化。但当我再次点击它时,什么也没发生,什么也没改变。然后,如果我删除静态缓存并单击favorite按钮,它确实会更改favorite状态,但只是第一次。基本上,每次我需要更改状态时,我都必须删除缓存。当我尝试向服务器添加评论时,也会发生同样的情况。这是我向服务器添加收藏夹的代码 static setFavorite() { cons
true
或false
,但我一直反复遇到同样的问题。我点击favorite按钮,确信favorite状态会发生变化。但当我再次点击它时,什么也没发生,什么也没改变。然后,如果我删除静态缓存并单击favorite按钮,它确实会更改favorite状态,但只是第一次。基本上,每次我需要更改状态时,我都必须删除缓存。当我尝试向服务器添加评论时,也会发生同样的情况。这是我向服务器添加收藏夹的代码
static setFavorite() {
const id = self.restaurant.id;
const fav_state = self.restaurant.is_favorite;
const fav_div = document.getElementById('fav_div');
let image = document.getElementById('fav_img');
console.log("fav", fav_state);
if (fav_state == 'true') {
DBHelper.toggleFavorite(id, false);
} else {
DBHelper.toggleFavorite(id, true);
}
}
static toggleFavorite(id, value) {
fetch('http://localhost:1337/restaurants/' + id + '/?is_favorite=' + value,
{
method: 'POST',
headers: {
"Content-Type": "application/json; charset=utf-8",
},
value: JSON.stringify(value)
})
.then(r => r.json())
.then(res => console.log(value));
}
感觉这里缺少一些代码。看起来setFavorite()函数从
self.restaurant.is\u favorite
获取fat\u state
,并将该值传递给toggleFavorite
。但是您提供的代码中没有显示如何修改self.restaurant.is\u favorite
我不确定您的代码中是否忘记将其从true
翻转到false
以及从false
翻转到true
还有一个附带说明(为了在代码中更好地使用javascript)
不要使用==true
,或者尝试重构代码以进行严格比较(==true),以避免任何副作用。
也不知道为什么你需要
让image
出现在你的代码中,以及你提供的与图像相关的代码中。就是这样。在第一次点击时,无论值是什么,数据都会被修改。但是如果我尝试再次点击它,它就会停止工作。我的意思是我有if语句。我不明白为什么它不能将workPut console.log()条目放在IF语句之前(值为fav_state)然后在IF和ELSE语句中-你看到输出了吗?你能不能在你的帖子中添加setFavorite
以及toggleFavorite
开头和结尾的value内容?我们是否确定地址不是http://localhost:1337/restaurants/“+id+”?是_favorite=“+value
?(否/之前?)是url是正确的。这是用于api的urlhttp://localhost:1337/restaurants//?is_favorite=
where is\u favorite可以是true也可以是false