Alright I want to submit a form thru jquery ajax. All the inputs are in an array and it is multidimensional.
好吧,我想通过jquery ajax提交表格。所有输入都在一个数组中,它是多维的。
Its a dynamic form that uses the array key as the question id. The subkey is used for grouping the questions at a question set.
它是一个动态形式,使用数组键作为问题ID。该子项用于在问题集中对问题进行分组。
<form name="testing" id="testing" method="post">
<label>Question 1?</label>
<input type="text" name="data[14][1]" id="" class="" value=""><br>
<label>Question 2?</label>
<input type="text" name="data[16][1]" id="" class="" value=""><br>
<label>Question 1?</label>
<input type="text" name="data[14][2]" id="" class="" value=""><br>
<label>Question 2?</label>
<input type="text" name="data[16][2]" id="" class="" value=""><br>
<label>Question 3?</label>
<select name="data[19]" id="" class="">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select><br>
<input type="submit" value="Submit">
</form>
So that is my example html. Here is my example jquery:
这就是我的示例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;
});
Problem is I get this as a return array:
问题是我把它作为一个返回数组:
Array
(
[0] => Array
(
[name] => data[14]
[value] => sd
)
[1] => Array
(
[name] => data[16]
[value] => s
)
)
But I want an array like this:
但我想要一个像这样的数组:
Array ( [14] => ddd [16] => ddd [19] => 4 )
Im sure its simple but I'm missing something. I know why its doing it but I can't get it the way I want it/need it. Can someone help?
我确定它很简单,但我错过了一些东西。我知道它为什么这样做,但我无法按照我想要的方式得到它/需要它。有人可以帮忙吗?
4 个解决方案
#1
3
Try below snippet,I have not tested this but probably it should work.
尝试下面的片段,我没有测试过这个,但可能它应该工作。
Replace var data = $('input[name^="data\\["]').serializeArray();
part with below snippet
替换var data = $('input [name ^ =“data \\ [”]')。serializeArray();部分与下面的片段
var data = {};
$.each($('input[name^="data\\["]').serializeArray(), function() {
data[this.name] = this.value;
});
Try this it will solve the data coming in front issues
试试这个它将解决前面问题的数据
i have worked out this one
我已经解决了这个问题
var data = {};
$.each($('select[name^="data\\["] , input[name^="data\\["]').serializeArray(), function() {
var vv = this.name.replace(/data/, '' ).replace(/(\[[0-9]\])$/,'');
data[vv] = this.value;
});
#2
0
I don't know how to do this in jquery but you can transform that array in php
我不知道如何在jquery中执行此操作,但您可以在php中转换该数组
$result = array();
foreach($array as $item) {
$index = intval(preg_replace("/data\[([0-9]*)\]/", '\1' $item['name']));
$result[$index] = $item['value'];
}
#3
0
Try this
var data = {};
$('input[name^="data\\["]').serializeArray().map(function(n){
var name = n['name'].replace(/data\[([0-9]*)\]\[(.*)\]/, '$1');
data[name] = n['value'];
});
#4
0
var data = {};
$.each($('input[name^="data\\["]').serializeArray(), function() {
data[this.name] = this.value;
});
gives console error >>
给出控制台错误>>
Uncaught SyntaxError: missing ) after argument list
参数列表后面的Uncaught SyntaxError:missing)
#1
3
Try below snippet,I have not tested this but probably it should work.
尝试下面的片段,我没有测试过这个,但可能它应该工作。
Replace var data = $('input[name^="data\\["]').serializeArray();
part with below snippet
替换var data = $('input [name ^ =“data \\ [”]')。serializeArray();部分与下面的片段
var data = {};
$.each($('input[name^="data\\["]').serializeArray(), function() {
data[this.name] = this.value;
});
Try this it will solve the data coming in front issues
试试这个它将解决前面问题的数据
i have worked out this one
我已经解决了这个问题
var data = {};
$.each($('select[name^="data\\["] , input[name^="data\\["]').serializeArray(), function() {
var vv = this.name.replace(/data/, '' ).replace(/(\[[0-9]\])$/,'');
data[vv] = this.value;
});
#2
0
I don't know how to do this in jquery but you can transform that array in php
我不知道如何在jquery中执行此操作,但您可以在php中转换该数组
$result = array();
foreach($array as $item) {
$index = intval(preg_replace("/data\[([0-9]*)\]/", '\1' $item['name']));
$result[$index] = $item['value'];
}
#3
0
Try this
var data = {};
$('input[name^="data\\["]').serializeArray().map(function(n){
var name = n['name'].replace(/data\[([0-9]*)\]\[(.*)\]/, '$1');
data[name] = n['value'];
});
#4
0
var data = {};
$.each($('input[name^="data\\["]').serializeArray(), function() {
data[this.name] = this.value;
});
gives console error >>
给出控制台错误>>
Uncaught SyntaxError: missing ) after argument list
参数列表后面的Uncaught SyntaxError:missing)