理解javascript多维数组的问题

时间:2010-07-14 23:16:21

标签: 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 = 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 [i]未定义。我也试过了:

send_data[this_id] = escape(content);

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

2 个答案:

答案 0 :(得分:3)

你并没有真正制作一个多维数组。你正在制作一个对象数组。无论哪种方式,在send_data[i]设置某个属性或数组元素之前,您必须使send_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)
};

答案 1 :(得分:0)

你必须先将每个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);
  });