我在其他StackOverFlow问题上看过这个问题,我似乎无法找到答案。
我有一张表格。
<input name="item[1]" class="item" value="1">
<input name="item[2]" class="item" value="50">
<input name="item[3]" class="item" value="12">
我正在尝试获取每个项目输入的结果并通过Ajax将它们发送到我的控制器,这在使用form action =“”方法时很好但是通过ajax我似乎无法格式化数据数组格式。
谁能告诉我我做错了什么?
$('button#despatchOrder').on('click', function() {
var values = $("input.items");
var myArray = $.map(values, function(value, index) {
return [value];
});
console.log(myArray);
});
不幸的是,Jquery不是我最强的语言,但我正在学习。我期待输出就像。
items = [
1 => 1,
2 => 50,
3 => 12
]
但我有与输入相关的所有内容,如
Input 1 = [
accept
accessKey
alt
etc
etc
]
答案 0 :(得分:7)
谁能告诉我我做错了什么?
很少! : - )
$.map
回调中,第一个参数将是元素,而不是其值,因此您只需使用其value
属性。return [value]
); $.map
将根据您从每次调用回调返回的值构建一个数组。input.items
使用了input.item
。如果不使用,则无需声明index
参数。
$('button#despatchOrder')。on('click',function(){
var values = $("input.item"); // ***
var myArray = $.map(values, function(element) { // ***
return element.value; // ***
});
console.log(myArray);
});
示例:
$('button#despatchOrder').on('click', function() {
var values = $("input.item");
var myArray = $.map(values, function(element) {
return element.value;
});
console.log(myArray);
});
<input name="item[1]" class="item" value="1">
<input name="item[2]" class="item" value="50">
<input name="item[3]" class="item" value="12">
<button id="despatchOrder">Despatch</button><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
使用item[1]
和此类名称为您提供数组中没有的项目。您所展示的内容
items = [
1 => 1,
2 => 50,
3 => 12
]
无效的JavaScript。以上给出了:
myArray = ["1", "50", "12"];
但是如果你想要名字/值对,可能最好是一组对象:
myArray = [
{name: "1", value: "1"},
{name: "2", value: "50"},
{name: "3", value: "12"}
]
要做到这一点:
var myArray = $.map(values, function(element) {
return {name: element.name.substring(5, 6), value: element.value};
});
当然,如果您想要整个名称item[1]
,只需删除substring
部分即可。
示例:
$('button#despatchOrder').on('click', function() {
var values = $("input.item");
var myArray = $.map(values, function(element) {
return {name: element.name.substring(5, 6), value: element.value};
});
console.log(myArray);
});
<input name="item[1]" class="item" value="1">
<input name="item[2]" class="item" value="50">
<input name="item[3]" class="item" value="12">
<button id="despatchOrder">Despatch</button><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
为了完整起见,您还可以使用其他 map
函数(jQuery有两个),但它对您没有任何好处:
var myArray = values.map(function() {
return this.value;
}).get();
请注意最后的.get()
。
答案 1 :(得分:0)
javascript没有关联数组,但您仍然可以通过数字键访问元素
$('button#despatchOrder').on('click', function() {
var values = $("input.items");
var myArray = $.map(values, function(value, index) {
return $(value).val();
});
console.log(myArray);
console.log(myArray[0]);
});
如果你想要一些类似于关联数组的东西,你应该使用一个js对象
{key:"value"}