XMLHttpRequest POST 请求体通常有三种格式:URI 编码文本、JSON 和多部分表单数据。关于
nest={"type_id":33, "name":'test'}
的问题似乎混淆了 URI 编码文本和 JSON(尽管可以以某种方式将它们组合起来)。多部分表单数据适用于二进制文件和大型传输。
URI 编码的主体看起来就像 GET 查询。 (
name1=value1&name2=value2&name3=value3 ...
)
名称和值都被 URI 编码为 URI 组件(
=
和 &
不是),但实际上大多数人都会选择对其自身进行编码的名称(例如字母数字)。
JSON 主体只是 JSON(字符串化对象)。
这道题的对象是……
{
nest: {
type_id: 33,
name: 'test'
}
}
... 字符串化为
{"nest":{"type_id":33,"name":"test"}}
。这就是整个身体。
“网络操作”子面板的“新请求”选项卡应该有一个
Content-Type
标头,其中包含内容 application/json
,尽管在野外,我在 JSON 中更频繁地看到 text/plain
。如果没有标题,您可以将其添加到底部有空 name
和 value
字段的位置。
为了完整起见,URI 编码的 POST 将(必须)具有
application/x-www-form-urlencoded
的内容类型。唯一的值是字符串,因此 type_id=33&name=test
使用字符串值 type_id
传输 33
。
顺便说一句,由于 JSON 是一个字符串,因此可以将 URI 编码的 JSON 传输为类似的内容
'json=' + encodeURIComponent( '{"nest":{"type_id":33,"name":"test"}}' )
这是json=%7B%22nest%22%3A%7B%22type_id%22%3A33%2C%22name%22%3A%22test%22%7D%7D
,虽然我从未见过有人这么做过。