使用jquery ajax post提交表单输入数组
好吧,我想通过jquery ajax提交表格。 所有输入都在一个数组中,它是多维的。
它是一个动态forms,使用数组键作为问题ID。 该子项用于在问题集中对问题进行分组。
这就是我的示例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)