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的url
http://localhost:1337/restaurants//?is_favorite=
where is\u favorite可以是true也可以是false