Проблема понимания многомерных массивов JavaScript - PullRequest
2 голосов
/ 15 июля 2010

Я боролся с этим часами. Я явно что-то упускаю полностью.

Я хочу получить некоторые значения из текстовых полей TinyMCE вместе с идентификаторами. Затем отправьте их через 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 ]

3 голосов
/ 15 июля 2010

Вы на самом деле не создаете многомерный массив. Вы делаете массив объектов. В любом случае, прежде чем вы сможете установить атрибут или элемент массива чего-либо в 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)
};
0 голосов
/ 15 июля 2010

Сначала вы должны сделать каждый 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);
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...