Han*_*ans 18 ajax jquery json brackets object
我有这个对象
var dataformdata={"key1":"value1","key2":"value2"};
Run Code Online (Sandbox Code Playgroud)
然后我用这个相同的键(key3)添加更多的值
dataformdata.key3 = [];
dataformdata.key3.push("value3");
dataformdata.key3.push("value4");
Run Code Online (Sandbox Code Playgroud)
我在每个斜坡做上面的事情.这一切都有效,除了在浏览器控制台中通过jQuery ajax函数发送dataformdata对象时,我看到键中有括号...
$.ajax({
type: "POST",
url: "/",
data: dataformdata,
...
这是我在浏览器控制台中看到的:
key1:value1
key2:value2
key3%5B%5D:value3
key3%5B%5D:value4
Run Code Online (Sandbox Code Playgroud)
它应该工作,因为它在jQuery.ajax()文档中说
对象必须是键/值对.如果value是一个数组,jQuery会根据传统设置的值使用相同的键序列化多个值
但为什么键中的括号(%5B%5D)?
maa*_*zza 17
你也可以使用traditional
ajax调用中的设置
http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings
传统类型:布尔值
如果您希望使用传统的param序列化样式,请将此属性设置为true.
例如:
$.ajax({
/*usual stuff */
traditional: true
})
Run Code Online (Sandbox Code Playgroud)
car*_*ira 12
这个带有键中括号的符号在jQuery 1.4中引入,用于处理多维数组或包含对象(或其他数组)本身的数组.这有助于解串器区分数组和原始值.例如,如果键中没有括号,那么这两个变量将以相同的方式序列化:
var v1 = { "k1":"v1", "k2":"v2", "k3":["v3"] };
Run Code Online (Sandbox Code Playgroud)
和
var v1 = { "k1":"v1", "k2":"v2", "k3":"v3" };
Run Code Online (Sandbox Code Playgroud)
使用括号表示法,它们被编码为
k1=v2&k2=v2&k3[]=v3
Run Code Online (Sandbox Code Playgroud)
和
k1=v2&k2=v2&k3=v3
Run Code Online (Sandbox Code Playgroud)
分别.
归档时间: |
|
查看次数: |
15816 次 |
最近记录: |