小编典典

JSON格式发送数据时,jQuery Form Data中括号出现问题

ajax

我有对象

    var dataformdata={"key1":"value1","key2":"value2"};

然后我用相同的key(key3)添加更多值

    dataformdata.key3 = [];
    dataformdata.key3.push("value3");
    dataformdata.key3.push("value4");

我在每个坡度上都进行上述操作。除了通过浏览器控制台中的jQuery
ajax函数发送dataformdata对象时,所有其他方法都有效,我看到键中有括号…

$.ajax({ type: "POST", url: "/", data: dataformdata,

这是我在浏览器控制台中看到的:

key1:value1
key2:value2
key3%5B%5D:value3
key3%5B%5D:value4

它应该工作,因为在jQuery.ajax()文档中它说

对象必须是键/值对。如果value是一个Array,则jQuery根据传统设置的值使用相同的键序列化多个值

但是,为什么键中要包含括号(%5B%5D)?


阅读 574

收藏
2020-07-26

共1个答案

小编典典

jQuery
1.4中引入了带有键括号的表示法,以处理多维数组或包含对象(或其他数组)本身的数组。这有助于解串器区分数组和原始值。例如,如果键中没有括号,则这两个变量将以相同的方式序列化:

var v1 = { "k1":"v1", "k2":"v2", "k3":["v3"] };

var v1 = { "k1":"v1", "k2":"v2", "k3":"v3" };

使用方括号符号,它们被编码为

k1=v2&k2=v2&k3[]=v3

k1=v2&k2=v2&k3=v3

分别。

2020-07-26