SyntaxError:“ JSON.parse:JSON数据的第1行第1列出现意外字符”

时间:2019-05-03 10:10:15

标签: angular angular-httpclient

在从Angular前端向Node后端发送HTTP DELETE请求时,抛出以下错误:

Syntax Error

但是DELETE请求仍然得到处理并且对象被删除。

这是我在Angular中的删除功能:

  deleteProject(id: number) {
     this.http.delete(`projects/${id}`).subscribe(
      response => {
        this.toastr.success('Project deleted.', 'Success');
      },
      err => {
        console.log(err);
      }
    );
  }

在我的后端API中:

function remove(req, res) {

  let query = {
    _id : req.params.id
  };

  Projeto.findById(query)
  .then(async (projeto) =>  {

    if(!projeto) {
      return res.status(404).json({error: 'not_found', message: 'This project doesn\'t exist.'});
    }

    if(projeto.project_manager.toString() != req.user._id.toString()) {
      return res.status(403).json({error: 'forbidden', message: 'You can\'t delete this project.'});
    } else {
      await Projeto.findByIdAndRemove(query);
    }


    res.status(200).send("Project deleted.");


  })
  .catch(utils.handleError(req, res));
}

该错误指的是什么,我该如何解决?

2 个答案:

答案 0 :(得分:1)

我的 AspNet Core Web Api 后端出现了同样的错误。

当我们像这样在 Ok 方法中返回一个值时:

Ok('some message') 它给出了这个错误:

JSON.parse: unexpected character at line 1 column 1 of the JSON data

如果我们只使用 Ok() 而没有任何消息,它工作得很好:)

这是我的工作控制器操作方法:

    [HttpPost("{receiverId}")]
    public ActionResult LikeUser(int userId, int receiverId)
    {
         var result = _likeRepository.LikeUser(userId, receiverId);

         if(result.IsSuccessful)
            return Ok();
        else
            return BadRequest(result.Message);
    }

答案 1 :(得分:0)

您显示的响应将其转换为JSON,然后尝试。由于您的响应不是JSON格式,因此会出现该错误。