首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >以json格式发送数据时jQuery表单数据中的方括号问题

以json格式发送数据时jQuery表单数据中的方括号问题
EN

Stack Overflow用户
提问于 2011-05-16 05:13:17
回答 4查看 17.5K关注 0票数 18

我有一个物体

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

然后使用相同的键(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为数组,jQuery将根据传统设置的值序列化具有相同键的多个值

但是为什么密钥中有括号(%5B%5D)?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-16 05:19:38

键中带括号的这种表示法是在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

分别使用。

票数 12
EN

Stack Overflow用户

发布于 2014-01-08 23:58:11

您还可以在ajax调用http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings中使用traditional设置

传统类型:布尔型

如果您希望使用传统风格的参数序列化,请将其设置为true。

例如:

$.ajax({
 /*usual stuff */
 traditional: true
})
票数 20
EN

Stack Overflow用户

发布于 2011-05-16 05:22:49

可以将具有相同键名的多个数据片段发送到脚本。您可以通过在键名的末尾添加方括号[]来指定应将数据解释为数组。

执行此操作的函数是jQuery.param。作为其工作原理的一个示例:

$.param({
    data: ['value3', 'value4']
});

data是一个数组。当它被序列化时,它被呈现为data%5B%5D=value3&data%5B%5D=value4。服务器端脚本会将其转换为数组。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6011284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档