如何创建包含键和值的 JavaScript 数组?

3

我正在动态生成一些文本框,并使用计数器使其看起来像这样:

form.append('Street: <input type="text" id="street'+counter+'" /> city: <input type="text" id="city'+counter+'" /><br/>'); 
counter++;

然后我正在这样做以创建一个数组。
var array = [];
for(i=1; i<counter; i++){
array.push({'a':$('#street' + i).val(),'b':$('#city' + i).val()});          
}   
console.log(array);
$.ajax({
  type: "POST",
  url: "dummy.php",
  data: array,
  success: function(response, textStatus, xhr) {
  },
  error: function(xhr, textStatus, errorThrown) {
  }
});

但问题是,当我尝试通过ajax将数组发送到php脚本时,我得到了以下错误:

参数 未定义 未定义 未定义 未定义

在firebug的post部分中。

我做错了什么?

firebug控制台显示如下console.log(array) firebug output

谢谢

看起来我找到了解决方案 我发送数据的方式如下: data: {Addresses:array}, 它可以正常工作


3
你是如何发送请求的?请发布代码。在创建数组后添加console.log(array)以检查值。 - Felix Kling
1
上传数据的代码在哪里? - ComFreek
这是使用console.log(array)的Firebug控制台外观 http://i53.tinypic.com/5mius3.jpg - Gihan Lasita
1个回答

2
您可以像这样直接发送您的表单(不要作为数组发送):
$.ajax({
  ...
  data: form.serialize()
  ...
});

你可以将其转化为一个数组并在服务器端进行操作。

或者,你也可以以一种特定的方式命名输入,这样它们就会自动成为两个数组:

form.append('Street: <input type="text" name="street[]" /> city: <input type="text" name="city[]" /><br/>'); 
$.ajax({
  ...
  data: form.serialize()
  ...
});

你的 PHP 脚本将会接收 $_POST['street']$_POST['city'] 作为数组。 希望这能帮到你。干杯!


我想将街道和城市这些数据插入到一行中,所以如果我使用form.serialize,我会得到两个数组,这很难处理。但是,如果我像我正在尝试的那样将街道和城市放在一个数组中,我将能够轻松构建查询。 - Gihan Lasita
看起来我找到了解决方案,我发送的数据如下:data: {Addresses:array}它起作用了。 - Gihan Lasita

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接