我有对象
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,…
$.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)?
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
分别。