理解javascript多维数组的问题

理解javascript多维数组的问题,javascript,jquery,ajax,json,post,Javascript,Jquery,Ajax,Json,Post,我想从TinyMCE文本框中获取一些值以及ID。然后通过ajax将这些内容发布到服务器 已加载jQuery 1.4和JSON库 var send_data = []; $('.contact_check').each(function(i, item) { var this_id = $(item).attr('id'); var msgbox = tinyMCE.get('contacts[' + this_id + '][message]'); var content = ad

我想从TinyMCE文本框中获取一些值以及ID。然后通过ajax将这些内容发布到服务器

已加载jQuery 1.4和JSON库

var send_data = [];

$('.contact_check').each(function(i, item) {
  var this_id = $(item).attr('id');
  var msgbox = tinyMCE.get('contacts[' + this_id + '][message]');
  var content = addslashes(msgbox.getContent());
  send_data[i]["id"] = this_id;
  send_data[i]["content"] = escape(content);
});

var encoded = JSON.stringify(send_data);

$.ajax({
  type: 'POST',
  url: 'http://localhost/test.php',
  data: encoded,
  contentType: 'application/json; charset=utf-8',
  dataType: 'json',
  success: function() {
    alert('jay');
  }
});
首先,

send_data[i]["id"] = this_id;
send_data[i]["content"] = escape(content);
似乎不起作用。它说发送未定义的数据。我也试过:

send_data[this_id] = escape(content);

这似乎也不起作用。JSON字符串返回为[]。我做错了什么?

你并不是在制作多维数组。您正在创建一个对象数组。无论哪种方式,在
send\u data[i]
上设置某个对象的属性或数组元素之前,必须使
send\u data[i]
成为某个对象

send_data[i] = {};
send_data[i]['id'] = this_id;
send_data[i]['content'] = escape(content);
或者更好:

send_data[i] = {
  id: this_id,
  content: escape(content)
};

您必须首先将每个send_data[i]设置为一个对象:

 $('.contact_check').each(function (i, item) {
    var this_id = $(item).attr('id');
    var msgbox = tinyMCE.get('contacts['+this_id+'][message]');
    var content = addslashes(msgbox.getContent());
    send_data[i] = {};
    send_data[i]["id"] = this_id;
    send_data[i]["content"] = escape(content);
  });