使用 jQuery 发布 JSON 后,将字符串转换回 JSON
Posted
技术标签:
【中文标题】使用 jQuery 发布 JSON 后,将字符串转换回 JSON【英文标题】:After posting JSON with jQuery, convert the string back into a 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不会自动序列化数据。
【参考方案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)
【讨论】:
以上是关于使用 jQuery 发布 JSON 后,将字符串转换回 JSON的主要内容,如果未能解决你的问题,请参考以下文章