使用jquery ajax post提交表单输入数组

好吧,我想通过jquery ajax提交表格。 所有输入都在一个数组中,它是多维的。

它是一个动态forms,使用数组键作为问题ID。 该子项用于在问题集中对问题进行分组。





1 2 3 4

这就是我的示例html。 这是我的示例jquery:

 $("#testing").submit(function() { var data = $('input[name^="data\\["]').serializeArray(); $.ajax({ type: "POST", url: "upload.php", data: {internalform: "submit", data: data}, dataType : "text", success: function(returndata){ if(returndata == "no") { return false; } else { alert("clicked 1 " + returndata); } } }); return false; }); 

问题是我把它作为一个返回数组:

 Array ( [0] => Array ( [name] => data[14] [value] => sd ) [1] => Array ( [name] => data[16] [value] => s ) ) 

但我想要一个像这样的数组:

 Array ( [14] => ddd [16] => ddd [19] => 4 ) 

我确定它很简单,但我错过了一些东西。 我知道它为什么这样做,但我无法按照我想要的方式得到它/需要它。 有人可以帮忙吗?

尝试下面的片段,我没有测试过这个,但可能它应该工作。

替换var data = $('input[name^="data\\["]').serializeArray(); 部分与下面的片段

 var data = {}; $.each($('input[name^="data\\["]')​.serializeArray()​, function() { data[this.name] = this.value; })​; 

试试这个它将解决前面问题的数据

我已经解决了这个问题

 var data = {}; $.each($('select[name^="data\\["] , input[name^="data\\["]').serializeArray(), function() { var vv = this.name.replace(/data/, '' ).replace(/(\[[0-9]\])$/,''); data[vv] = this.value; }); 

我不知道如何在jquery中执行此操作,但您可以在php中转换该数组

 $result = array(); foreach($array as $item) { $index = intval(preg_replace("/data\[([0-9]*)\]/", '\1' $item['name'])); $result[$index] = $item['value']; } 

试试这个

 var data = {}; $('input[name^="data\\["]').serializeArray().map(function(n){ var name = n['name'].replace(/data\[([0-9]*)\]\[(.*)\]/, '$1'); data[name] = n['value']; }); 
 var data = {}; $.each($('input[name^="data\\["]')​.serializeArray()​, function() { data[this.name] = this.value; })​; 

给出控制台错误>>

参数列表后面的Uncaught SyntaxError:missing)