【问题标题】:Can I post just JSON as data in Angular?我可以在 Angular 中仅将 JSON 作为数据发布吗?
【发布时间】:2018-03-09 01:13:10
【问题描述】:

在 Angular 4 中,我怎样才能将 JSON 作为数据发布?

目前,我的邮编是:

let options = {
    headers: new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded)
};

let urlSearchParams = new URLSearchParams();

urlSearchParams.append('key', 'value');

let bodyString = urlSearchParams.toString();

return this.http.post(api, bodyString, options);

如您所见,我在 post 之前使用了 application/x-www-form-urlencodedURLSearchParams。 (正在工作)

我认为有一种方法可以只使用JSON。 (例如this.http.post(api, MY_JSON)

我尝试过new HttpHeaders().set('Content-Type', 'application/json'),但没有成功。

以下是我想要的:

let options = {
    headers: new HttpHeaders().set('Content-Type', 'application/json)
};

return this.http.post(api, MY_JSON, options);

如果我像上面那样发布,一切都会正确发布,但服务器没有反应。

我应该检查后端吗?

【问题讨论】:

  • URL 搜索参数用于查询字符串,例如?key=value在 URL 中payload(请求的主体)究竟应该是什么?您可以传递要发布的数组和对象并将它们序列化。
  • 如果你使用的是json content-type header,你可以传入json对象作为.post()的第二个参数
  • @jonrsharpe 我添加了更多解释。我知道 URLSearchParams 用于查询字符串。但是,到目前为止,这似乎是我发布角度的唯一方法。如果“以下是我想要的”代码没有问题,我应该检查后端吗?
  • 好吧,如果您在测试或浏览器中查看请求,它是否具有您期望的结构?是的,我认为您需要检查服务器。
  • @jonrsharpe 是的,当我在 Chrome 的网络选项卡中发布时,我看到了我期望的结构。只是我不确定我是否在前端做错了什么。谢谢。

标签: angular post content-type angular-http


【解决方案1】:

这是后端配置。

在 symfony3(PHP) 中,只需运行 json_decode() 即可从前端获取 json。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多