【问题标题】:After posting JSON with jQuery, convert the string back into a JSON使用 jQuery 发布 JSON 后,将字符串转换回 JSON
【发布时间】:2021-11-02 05:03:03
【问题描述】:

所以我有一些发布此 JSON 的代码:

post = {
    period: "1",
    data: {1: "Here"}
}

它是用这个代码发布的:

$.ajax({
    url: 'http://127.0.0.1:5000/',
    data: post,
    type: 'POST'
})

当我执行这段代码时,我的服务器会收到这个字符串:"period=1&data%5B3%5D=Here"

有没有办法将此字符串转换回 JSON?

我已经尝试过JSON.parse(),但这显然不起作用。

【问题讨论】:

  • 您使用的是哪种服务器? PHP、nodejs/express等?
  • 我正在使用 node.js
  • 你在nodejs或express中尝试过body parser中间件吗?
  • 您是否尝试在发送对象之前对其进行字符串化:data: JSON.stringify(post)(同时添加:contentType: "application/json; charset=utf-8")?如果您使用的是 express,您可以使用 urlencoded() 中间件将 url 编码的字符串解析为对象
  • 把它改成data: JSON.stringify(post) 看看会不会有什么不同,因为我认为jQuery不会自动序列化数据。

标签: javascript jquery json


【解决方案1】:

它从来都不是 JSON,您可以使用 JSON.stringify 将其作为 JSON 发送,然后使用 JSON.parse 将其作为对象返回到服务器。

$.ajax({
    url: 'http://127.0.0.1:5000/',
    data: JSON.stringify(post),
    contentType: 'application/json',
    type: 'POST'
})

【讨论】:

    【解决方案2】:

    你可以用URLSearchParams constructor解析字符串,然后用Object.fromEntries把它转换成一个对象:

    const obj = Object.fromEntries(new URLSearchParams("period=1&data%5B3%5D=Here"));
    console.log(obj)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-28
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-08
      • 2020-12-01
      • 1970-01-01
      相关资源
      最近更新 更多