js serialize()是否适用于数组字段名称?

时间:2016-10-26 23:20:55

标签: javascript php arrays ajax

我有一个表单字段,如下所示:

<input name="cm[3]" value="0.0000">

我使用serializeData函数将其发布到安全的ajax函数:

var formData = $(form).serialize();
console.log(formData);
secureajax.securecall({
    url: '/ajax/quadrants/thresholds-write',
    data: formData,
    success: function(data) {
    ... etc

请注意,我正在将数据转储到控制台......

如果我运行此代码,然后立即在/ ajax / quadrants / thresholds-write页面转储$ _POST数组,我在控制台上看到我的输入值(序列化数据转储)但是post变量总是显示默认值,在这种情况下,&#34; 0.0000&#34;。

控制台代码段:

quad_token=b765def8e66df0d473148310175e8a6e&systemsId=12&selectedString=1&cm%5B3%5D=9999...

转储$ _POST的PHP:

Array
(
    [systemsId] => 12
    [selectedString] => 1
    [cm] => Array
        (
            [3] => 0.0000
            [5] => 1.0000
            [7] => 0.0000

CM [3]的默认值是0.0000,但是当我输入9999等内容时,我在js中看到,但就好像系统正在读取值标签而不是输入的值。或者,我认为数组表单字段名称没有处理,但那么数组的格式如何正常,只是值搞砸了?

有什么想法吗?

注意:secureajax是一个自定义函数,为ajax调用提供CSRF功能。

1 个答案:

答案 0 :(得分:0)

我发现了这个问题。我有多个div,一次只显示一个div,并且数组变量没有考虑多个表单,所以最后一个表格的变量都覆盖了它们。离开这里即使它是一个错误,因为其他人可能会这样做。这很容易被忽视。